递归小结

来源:互联网 发布:mac恢复单一分区 编辑:程序博客网 时间:2024/05/20 13:12

递归

 

在方法内部调用方法本身的现象

 

注意事项

递归调用必须要有出口,否则就会死递归内存溢出。

递归的次数不宜过多,过多的话有可能会出现内存溢出。

构造方法不能递归调用。

 

递归求阶乘

public class DiGuiDemo {

public static void main(String[] args) {

int num = 5;

System.out.println(jc(num));

}

public static int jc(int n) {

if (n == 1) {

return 1;

} else {

return n * jc(n - 1);

}

}

}

经典案例:

有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问第二十个月的兔子对数为多少? 

通过分析我们得到这样的一个数列

  1,1,2,3,5,8,13,21,...

出口:第一项和第二项是已知的。

规律:从第三项开始,每一项是前两项之和。

 

public class DiGuiDemo3 {

public static void main(String[] args) {

System.out.println(fun(20));

}

public static int fun(int n) {

if (n == 1 || n == 2) {

return 1;

} else {

return fun(n - 1) + fun(n - 2);

}

}

}

0 0