遞歸與迭代

遞歸與迭代的區別:函數

1)遞歸是本身調用本身,自身實現循環spa

eg:斐波那契數列應用blog

      /*
   一對兔子,第三個月開始,每月生產一對小兔子
   小兔子,從第三個月開始,每月生產一對小兔子
   問: 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.迭代難於理解但效率高,遞歸易於理解效率低,死遞歸會形成棧溢出,內存開銷大,推薦遞歸
相關文章
相關標籤/搜索