遞歸與迭代


遞歸與迭代的區別:

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.迭代難於理解但效率高,遞歸易於理解效率低,死遞歸會造成棧溢出,內存開銷大,推薦遞歸









免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM