方法的递归调用
- 方法自己调用自己
- 适用于: 方法中运算的主体不变,但运行的方法参数会发生变化
- 注意:
- 递归一定要有出口,必须可以让程序可以停下
- 递归次数不能过多
- 构造方法,禁止递归
计算斐波那契数列
一对兔子,第一个月不生第二个月不生,从第三个月开始生下一对兔子
生下的那一对兔子,第一个月不生第二个月不生,从第三个月开始生下一对兔子
12个月 一共有多少对兔子
1 1 2 3 5 8 13 21 34 55 89 144
从第三个月开始 month = (month-1)+(month-2)
编码:
public static int f(int month){
if(month1){
return 1;
}
if(month2){
return 1;
}
return f(month-1)+f(month-2);
}
}
例题1;用递归计算1–n之间的整数的和
public int sum(int n){
int res = 0;
if( n == 1){
res = 1;
}else{
/* res = 5 + sum(4) 4 + 3+2 +1
sum(4) =4 + sum(3) = 3+ 2+ 1
sum(3) =3 + sum(2)=2+1
sum(2) = 2 + 1
*/
res = n + sum(n - 1);
}
return res;
}
例题2:用递归计算n的阶乘
public int jiecheng(int n){
int a = 0;
if (n == 1){
a= 1;
}else{
a= n * (n - 1);
}
return a;
}