免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
遞歸和迭代的區(qū)別

遞歸和迭代的區(qū)別

分類: C/C++ 1595人閱讀 評論(3) 收藏 舉報

遞歸的基本概念:程序調(diào)用自身的編程技巧稱為遞歸,是函數(shù)自己調(diào)用自己.

一個函數(shù)在其定義中直接或間接調(diào)用自身的一種方法,它通常把一個大型的復雜的問題轉(zhuǎn)化為一個與原問題相似的規(guī)模較小的問題來解決,可以極大的減少代碼量.遞歸的能力在于用有限的語句來定義對象的無限集合.

使用遞歸要注意的有兩點:

1)遞歸就是在過程或函數(shù)里面調(diào)用自身;

2)在使用遞歸時,必須有一個明確的遞歸結(jié)束條件,稱為遞歸出口.

 

遞歸分為兩個階段:

1)遞推:把復雜的問題的求解推到比原問題簡單一些的問題的求解;

2)回歸:當獲得最簡單的情況后,逐步返回,依次得到復雜的解.

 

利用遞歸可以解決很多問題:如背包問題,漢諾塔問題,...等.

斐波那契數(shù)列為:0,1,1,2,3,5...

fib(0)=0;

fib(1)=1;

fib(n)=fib(n-1)+fib(n-2);

 

  1. int fib(int n)  
  2. {  
  3.    if(0 == n)  
  4.        return 0;  
  5.    if(1 == n)  
  6.        return 1;  
  7.    if(n > 1)  
  8.        return fib(n-1)+fib(n-2);  
  9. }  

上面就是一個簡單的遞歸調(diào)用了.由于遞歸引起一系列的函數(shù)調(diào)用,并且有可能會有一系列的重復計算,遞歸算法的執(zhí)行效率相對較低.

 

 

迭代:利用變量的原值推算出變量的一個新值.如果遞歸是自己調(diào)用自己的話,迭代就是A不停的調(diào)用B.

遞歸中一定有迭代,但是迭代中不一定有遞歸,大部分可以相互轉(zhuǎn)換.能用迭代的不用遞歸,遞歸調(diào)用函數(shù),浪費空間,并且遞歸太深容易造成堆棧的溢出.

 

  1. //這是遞歸   
  2. int funcA(int n)  
  3. {  
  4.     if(n > 1)  
  5.        return n+funcA(n-1);  
  6.     else   
  7.        return 1;  
  8. }  
  9. //這是迭代   
  10. int funcB(int n)  
  11. {  
  12.     int i,s=0;  
  13.     for(i=1;i<n;i++)  
  14.        s+=i;  
  15.     return s;  
  16. }  

本站僅提供存儲服務,所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
經(jīng)典算法設(shè)計方法大雜燴
漫談遞歸:遞歸的效率問題
迭代是人,遞歸是神(迭代與遞歸的總結(jié):比較)
遞歸和迭代
Java學習:遞歸
斐波那契數(shù)列的遞歸函數(shù)
更多類似文章 >>
生活服務
分享 收藏 導長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服