更多课程 选择中心

Java培训
美国上市教育机构

400-111-8989

热门课程

你知道什么是java递归吗,怎么用呢?

  • 发布:Java培训
  • 来源:博客
  • 时间:2019-10-28 09:09

在学习java的小伙伴,对递归这个词应该不陌生吧,递归是指在一个方法的内部调用自身的过程,递归必须要有结束条件,不然就会陷入无限递归的状态,永远无法结束调用。接下来通过一个案例来学习如何使用递归算法计算自然数之和,如例Example1.java。

public class Example1 {

public static void main(String[] args) {

int sum=getsum(4); //调用递归方法,获得1~4的和

System.out.println("sum="+sum); //打印结果

}

//下面的方法使用递归实现求1~n的和

public static int getsum(int n) {

if(n==1){

//满足条件,递归结束

return 1;

}

int temp=getSum(n-1);

return temp+n;

}

}

运行结果为:

sun = 10

java方法

Example1.java中,定义了一个getSum()方法用于计算1~n之间自然数之和。例程中的12行代码相当于在getSum()方法的内部调用了自身,这就是方法的递归,整个递归过在n==1时结束。整个递归过程中getsum()方法被调用了4次,每次调用时,n的值都会递减。当n的值为1时,所有递归调用的方法都会以相反的顺序相继结束,所有的返回值会进行累加,最终得到结果10。

使用递归时需要注意的问题。

【1】递归就是方法里调用自身。

【2】在使用递归策略时,必须有一个明确的递归结束条件,称为递归出口。

【3】递归算法代码显得很简洁,但递归算法解题的运行效率较低。所以不提倡用递归设计程序。

【4】在递归调用的过程中系统为每一层的返回点、局部量等开辟了栈来存储。递归次数过多容易造成栈溢出等,所以一般不提倡用递归算法设计程序。

【5】在做递归算法的时候,一定把握出口,也就是做递归算法必须要有一个明确的递归结束条件。这一点是非常重要的。其实这个出口就是一个条件,当满足了这个条件的时候我们就不再递归了。

不过java中的递归也不是十全十美的哦,那么他有什么缺陷呢?

递归的缺陷:

简单的程序是递归的优点之一。但是递归调用会占用大量的系统堆栈,内存耗用多,在递归调用层次多是速度要比循环慢的多,所以在使用递归时要慎重。

  • 为Ta点赞
  • 人已赞
选择城市和中心
江西省

贵州省

广西省

海南省