如果我們需要重複多次計算相同的問題,通常可以選擇遞迴或者迴圈
遞迴的好處是**簡潔
但是遞迴也有明顯的缺點:
斐波拉契數列
publicclass
exam9_fibonacci
//利用遞迴方式
private
static
long fibonacci(int
n)
//利用迴圈方式
private
static
long circulation(int
n)
return
fibn;
}}
得到的結果是:
n值最終結果
遞迴方式對fibonacci()方法的呼叫次數
遞迴方法時間(ms)
迴圈方法(ms)
時間太長
明顯的看出,時間複雜的:
遞迴方式是以n的指數的方式遞增的
迴圈是o(n)
所以,對於斐波那契數列,迴圈的方式更好
迴圈與遞迴
優缺點 迴圈效率更高,遞迴容易理解 是大家普遍的觀點。儘管兩種想法在時間複雜度和空間複雜度上是等價的。但遞迴的有乙個弱勢 函式呼叫開銷如引數傳遞和堆疊之類的開銷,會導致在層次過深的時候,系統崩潰。遞迴是用棧機制實現的 c 每深入一層,都要占去一塊棧資料區域,對巢狀層數深的一些演算法,遞迴會力不從心,...
遞迴與迴圈
遞迴與迴圈 大一學c 的時候,老師說過遞迴與迴圈是可以相互轉化的,當時好像是用來兩重迴圈解決遞迴問題,演算法的複雜度依然是o n 最近發現可以通過模擬實現棧結構通過一重迴圈實現非遞迴演算法。遞迴必須滿足以下兩個條件 首先我們給出乙個最簡單的遞迴實現,演算法的目的是為了得到乙個大於等於10的數字。1 ...
遞迴與迴圈
記得參加某公司的筆試題,有一道題很簡單要求用遞迴方法,當時不太明白什麼是遞迴,刷刷用迴圈寫了出來,結果錯了.所以一定要搞清楚遞迴與迴圈的概念。遞迴 遞迴是乙個函式的內部呼叫這個函式自身 一定記住是呼叫自身的函式 迴圈 迴圈是通過設定計算的初始值及終止條件,在乙個範圍內重複運算 for,while等迴...