-
簡而言之,遞迴是乙個直接或間接呼叫自身並屬於遞迴範圍的程式。
-
只要能用遞迴形式表示,就有終止條件。
-
一般來說,這取決於程式設計師自己的素養。
-
遞迴和迭代都是迴圈的型別。
簡單地說,遞迴就是函式本身的重複呼叫來實現迴圈。 迭代與普通迴圈的區別在於,在迴圈中參與操作的變數也是儲存結果的變數,當前儲存的結果作為下乙個迴圈計算的初始值。
在遞迴迴圈中,當滿足終止條件時,它會逐層返回到末尾。 迭代使用計數器來結束迴圈。 當然,在許多情況下,它是一種多迴圈混合物,具體取決於具體需求。
遞迴的乙個例子是,給定乙個整數陣列,使用減半查詢返回陣列中指定值的索引,假設陣列是排序的,並且為了描述,假設元素都是正數,陣列的長度是 2 的整數倍。
半拆分查詢是一種查詢型別,比遍歷所有元素要快得多。
int find(int *ary,int index,int len,int value)
if(len==1) 最後乙個元素。
if (ary[index]==value)return index;成功的查詢將返回乙個索引。
return -1;失敗,返回 -1
如果長度大於 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 的所有實數之和。
int v=1;
for(i=2;i<=100;i++)
v=v+i;
-
<>1.呼叫自身的程式的程式設計技術稱為遞迴。
2. 遞迴在程式語言中被廣泛用作一種演算法。
3.乙個過程或函式在其定義或描述中具有直接或間接呼叫自身的方法,該方法通常將乙個大而複雜的問題轉化為與原始問題相似的小規模問題來解決,遞迴策略只需要少量程式來描述求解過程中所需的多次重複計算, 這大大減少了程式的數量。遞迴的能力在於定義具有有限遮蔽語句的無限物件集。 通常,遞迴需要邊界條件、遞迴前向段和遞迴返回段。
當邊界不滿足時,遞迴前進; 當滿足邊界條件時,遞迴返回。
許多初學者往往對遞迴感到困惑,並花費大量時間在遞迴上。 其實教科書上的例子很經典,但說的有點嘮叨。 初學者會看大頭。 >>>More