---------------------- android培训 、 java培训、期待与您交流! ----------------------
递归 是指在方法调用的过程中调用该方法自身的调用。 一般用在类似Fibonacci函数 树状结构的应用程序当中。
例如下面这个例子:求数列 1 ,1,2,3,5,8,13.......第n个数列的值
public class UserTest {
public static void main(String[] args) {
System.out.println(method(6));
}
private static int method(int i) {
if(i == 1||i==2) return 1;
else
return method(i-1)+method(i-2);
}
}
这就是一个简单的递归程序,其调用过程为:method(6)的 method(i-1)的调用过程:method(6)—method(5)—method(4)—method(3)—method(2),method(2)返回,调用method(1)—method(1)返回—method(3)调用完返回method(4)—调用method(4)的method(2)—method(2)返回—method(4)调用完返回method(5)—调用method(5)的method(3)—method(3)返回—method(5)调用完返回method(6),再执行method(6)的method(i-2)过程,与前面过程类似。最后method(6)调用完返回main()。
这是一个Fibonacci函数 形式递归。合理利用递归,会使我的程序变得简洁高效。
当然上述程序也可以用普通方法实现,以下为实现方式:
首先分析数列规律:第n个数的值为n-1个数和n-2个数的值的和,所以我们设局部变量num1和num2 储存这两个数 numSum储存他们的和
private static long number(int i){
if(i==1||i==2) return 1;
long num1=1L;
long num2=2L;
long numSum=0;
for(int j =1;j<i-2;j++){
//每次循环,把n-1那个数的值赋给n-2那个数的值,他们的和赋给n-1那个数的值
numSum=num1+num2;
num1=num2;
num2=numSum;
}
return numSum;
}
通过对比,可以发现递归方式实现起来简单很多。
---------------------- android培训 、java培训 、期待与您交流! ----------------------
详细请查看:http://edu.csdn.net/heima