递归与迭代

递归与迭代的区别:

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.迭代难于理解但效率高,递归易于理解效率低,死递归会造成栈溢出,内存开销大,推荐递归








posted @ 2019-05-28 20:19  Bronze-y  阅读(810)  评论(0编辑  收藏  举报