迭代(iteration)與遞迴(recursion)是開發過程中常用的程式設計技巧,二者有相似,也有區別。
1、遞迴
簡單地說,就是函式呼叫函式自己。
通常把相同規則的業務,定義為乙個函式,通過函式的重複呼叫,完成整體業務的實現。用有限的語句來定義物件的無限集合。
比如,乙個數字的階乘計算,通過遞迴實現如下:
//遞迴
public static int recursion(int num) else
}public static void main(string args)
2、迭代
迭代是通過計算得到下乙個計算初始值,並使用計算得到的值進行下一步的計算,直到不符合條件,計算結束。與遞迴的區別為,函式a呼叫其他函式b。
同樣計算階乘,使用迭代方法實現如下:
//迭代
public static int iteration(int num)
int result = 1;
for (int i = num; i >= 1; i--)
return result;
}public static void main(string args)
3、比較
①遞迴中一定有迭代,迭代中不一定有遞迴。多數情況下上二者可以相互轉換。
②遞迴滿足條件後,逐層返回,每層都計算完後才返回結果;迭代滿足條件後,通過計數器結束迴圈,直接返回計算結果。遞迴與迭代相比較,效率低。
③能使用迭代,盡量不要使用遞迴,因為迭代會浪費空間,棧深不夠,會出現stackoverflowerror棧異常。
遞迴和迭代的比較
遞迴中一定有迭代,但是迭代中不一定有遞迴 大部分可以相互轉換。相對來說,能用迭代不用遞迴 因為遞迴不斷呼叫函式,浪費空間,容易造成堆疊溢位 迭代難以理解,但是其執行過程中效率高 遞迴則易於理解,但是其執行效率相對於迭代低 在設計中,從效率考慮,如果能用迭代的話,就用迭代 但是從程式演算法的理解來看,...
遞迴和迭代 迭代與遞迴
很多程式設計小白都會遇到 迭代 和 遞迴 的問題 包括我自己 大部分同學還是不知道迭代與遞迴的區別。下面我就嘗試用最通俗易懂的模式講解遞迴與迭代的區別。1.迭代 迭代其實很簡單,我們在程式設計中經常用到迭代。比如說 i 1 print i 這個就是乙個迭代,沒想到吧。迭代的意思其實就是在迴圈 現了參...
迭代是人,遞迴是神(迭代與遞迴的總結 比較)
在計算機程式設計實現中有常常兩種方法 一曰迭代 iterate 二曰遞迴 recursion 從 程式設計之美 的角度看,可以借用一句非常經典的話 迭代是人,遞迴是神!來從巨集觀上對二者進行把握。從概念上講,遞迴就是指程式呼叫自身的程式設計思想,即乙個函式呼叫本身 迭代是利用已知的變數值,根據遞推公...