递归算法
方法定义中调用方法本身的现象。
递归注意实现:
- 要有出口,否则就是死递归
- 次数不能太多,否则就内存溢出
- 构造方法不能递归使用
递归解决问题的思想:
- 找到出口
- 找到规律
代码示例:
A.
1 package com.shanghai.digui; 2 //用递归算法求5的阶乘,例:1*2*3*4*5=120
3 public class DiguiDemo1 { 4 public static void main(String[] args){ 5 int y=digui(5); 6 System.out.println(y); 7 } 8 9 private static int digui(int i) { 10 if (i==1) { 11 return 1; //当i==1时,此时为出口 12 }else { 13 return i*digui(i-1); //调用自身方法 14 } 15 16 } 17 }
B.
1 package com.shanghai.digui; 2 //用递归算法求出斐波那契数列的第十位是多少? 3 //斐波那契数列 例:1 1 2 3 5 8 13 ....... 4 //从第三个起后一个数字是前两数字之和 5 public class FeiBoNaChiDemo { 6 public static void main(String[] args){ 7 int num=fibonachi(10); 8 System.out.println(num); 9 10 } 11 12 private static int fibonachi(int i) { 13 if (i<3) { 14 return 1; //出口 15 }else { 16 return fibonachi(i-1)+fibonachi(i-2); //调用自身方法 17 } 18 19 } 20 }