對遞迴和迭代的認識

2022-02-07 07:14:59 字數 1048 閱讀 9590

遞迴:

程式呼叫自身的程式設計技巧稱為遞迴,就是函式重複的自己呼叫自己。在使用遞迴時,必須有乙個明確的遞迴結束條件,稱為遞迴出口.

迭代:

利用變數的原值推算出變數的乙個新值.如果遞迴是自己呼叫自己的話,迭代就是a不停的呼叫b。

遞迴的優點:

1)大問題化為小問題,可以極大的減少**量;

2)用有限的語句來定義物件的無限集合.;

3)**更簡潔清晰,可讀性更好

迭代的優點:

1)迭代效率高,執行時間只因迴圈次數增加而增加;

2)沒什麼額外開銷,空間上也沒有什麼增加。

遞迴的缺點:

1)遞迴呼叫函式,浪費空間;

2)遞迴太深容易造成堆疊的溢位。

迭代的缺點:

1) 不容易理解;

2) **不如遞迴簡潔;

3) 編寫複雜問題時困難。

二者的關係:

1) 遞迴中一定有迭代,但是迭代中不一定有遞迴,大部分可以相互轉換。

2) 能用迭代的不用遞迴,遞迴呼叫函式,浪費空間,並且遞迴太深容易造成堆疊的溢位.

遞迴的例項:折半查詢法

function sort(arr)

var pivotindex=math.floor(arr.length/2);

var privot = arr.splice(pivotindex,1)[0];

var left = ;

var right = ;

for (var i=0;i迭代的例項:計算1-100所有實數的和

var v=1;

for(var i=100;i<=100;1--){

v=v+i;

遞迴和迭代 迭代與遞迴

很多程式設計小白都會遇到 迭代 和 遞迴 的問題 包括我自己 大部分同學還是不知道迭代與遞迴的區別。下面我就嘗試用最通俗易懂的模式講解遞迴與迭代的區別。1.迭代 迭代其實很簡單,我們在程式設計中經常用到迭代。比如說 i 1 print i 這個就是乙個迭代,沒想到吧。迭代的意思其實就是在迴圈 現了參...

遞迴和迭代

遞迴和迭代是兩種常用的演算法,很多人知道怎麼寫遞迴和迭代,但是不知道什麼時候該用遞迴,什麼時候該用迭代。下面的 分別通過使用遞迴和迭代計算fibonacci數列,可以很清楚的看到效率的驚人差別。當然,很難有個準則說什麼時候該用遞迴,什麼時候該用迭代,但有乙個很簡單的判斷方法 如果你的遞迴呼叫是在函式...

遞迴和迭代

分享自 酷勤網 www.kuqin.com 遞迴函式 遞迴可以描述不同的概念,如果說乙個函式是遞迴的,那麼就是說函式的定義中 直接或者間接地 引用了該函式本身。比如求斐波那契數列,使用swift實現 func fib n int intreturn fib n 1 fib n 2 從函式定義看,fi...