递归与迭代
递归与迭代的区别:
1)递归是自己调用自己,自身实现循环
eg:斐波那契数列应用
/*
一对兔子,第三个月开始,每个月生产一对小兔子
小兔子,从第三个月开始,每个月生产一对小兔子
问: 1--12月各有多少对兔子
*/
1 1 2 3 5 8 13 21
for(int i=1;i<13;i++){
int num=Test.getCount(i);
System.out.println(i+"月"+num);
}
public static int getCount(int month){
if(month==1||month==2){
return 1;
}else{
return getCount(month-1)+getCount(month-2);
}
}
2.函数内某段代码实现循环(迭代与普通循环的区别是:循环代码中参与运算的变量同时是保存结果的变量,当前保存的结果作为下一次循环计算的初始值.)
eg:
1.斐波那契数列
public static void feibonaqishulie(int n){
int a=1,b=1,c=0;
for(int i=1;i<=n;i++){
if(i==1){
System.out.println("第"+i+"个是"+a);
}else if(i==2){
System.out.println("第"+i+"个是"+b);
}else{
c=a+b;
a=b;
b=c;
System.out.println("第"+i+"个是"+c);
}
}
}
2.计算1-100所有实数的和:
int sun=1;
for(int i=2;i<=100;i++){
sun=sun+i;
}
3.迭代难于理解但效率高,递归易于理解效率低,死递归会造成栈溢出,内存开销大,推荐递归