遞迴和迭代都是迴圈的一種。
簡單地說,遞迴是重複呼叫函式自身實現迴圈。迭代是函式內某段**實現迴圈,而迭代與普通迴圈的區別是:迴圈**中參與運算的變數同時是儲存結果的變數,當前儲存的結果作為下一次迴圈計算的初始值。
遞迴迴圈中,遇到滿足終止條件的情況時逐層返回來結束。迭代則使用計數器結束迴圈。當然很多情況都是多種迴圈混合採用,這要根據具體需求。
遞迴的例子,比如給定乙個整數陣列,採用折半查詢返回指定值在陣列中的索引,假設陣列已排序,為方便描述,假設元素都為正數,陣列長度為2的整數倍。
折半查詢是查詢的一種,比遍歷所有元素要快很多。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
int
find(
int
*ary,
int
index,
int
len,
int
value)
//如果長度大於1,進行折半遞迴查詢
int
half=len/2;
//檢查被查值是否大於上半部分最後乙個值,如果是則遞迴查詢後半部分
if
(value>ary[index+half-1])
return
find(ary,index+half,half,value);
//否則遞迴查詢上半部分
return
find(ary,index,half,value);
}
迭代經典例子就是實數的累加,比如計算1-100所有實數的和。
1
2
3
4
5
int
v=1;
for
(i=2;i<=100;i++)
遞迴和迭代有什麼區別?
遞迴 和 迭代 的區別如下 1 遞迴的基本概念 程式呼叫自身的程式設計技巧稱為遞迴,是函式自己呼叫自己.乙個函式在其定義中直接或間接呼叫自身的一種方法,它通常把乙個大型的複雜的問題轉化為乙個與原問題相似的規模較小的問題來解決,可以極大的減少 量.遞迴的能力在於用有限的語句來定義物件的無限集合。2 迭...
遞迴和迭代有什麼區別
遞迴和迭代都是迴圈的一種。遞迴迴圈中,遇到滿足終止條件的情況時逐層返回來結束。迭代則使用計數器結束迴圈。當然很多情況都是多種迴圈混合採用,這要根據具體需求。遞迴與迭代都是基於控制結構 迭代用重複結構,而遞迴用選擇結構。遞迴與迭代都涉及重複 迭代顯式使用重複結構,而遞迴通過重複函式呼叫實現重複。遞迴與...
For in迭代 和For of有什麼區別
for in for in 迴圈返回的值是資料的結構的key 模擬鍵值名 遍歷物件返回的物件key值,遍歷陣列返回的陣列的下標 key for in 不僅可以遍歷數字 鍵名,還會遍歷原型上的值和手動新增其他的鍵 for in 迴圈出的是 key 總結 fon in 迴圈貼別適合遍歷物件 for of...