如果乙個函式在其函式體內直接或間接地呼叫了自己,該函式就被稱為遞迴函式。遞迴函式是解決某些複雜問題的十分有效的方法。
》遞迴適用於:
#資料的定義形式按遞迴定義。
如fibonacci數列的定義為:
f(n)=f(n-1)+f(n-2) 當n>1
f(0)=1 當n=0
f(1)=2 當n=1
整數的階乘定義:
n!=n*(n-1)! 當n>0
0!=1 當n=0
這類遞迴問題可轉化為遞推問題,遞迴邊界作為遞推的邊界條件。
#資料之間的關係(即資料結構)按遞迴定義,如樹的遍歷、圖的搜尋等。
#問題解法按遞迴演算法實現,例如回溯法等。
>示 例
求階乘n!
#includeusing namespace std;
int fact(int n)
int main()while(k<0);
cout<
若用fact(3)呼叫該函式,則執行過程如下:
>呼叫fact(3),由於n=3(n<=1條件為假),所以函式返回表示式3*fact(2)的值。
>呼叫fact(2),由於n=2(n<=1條件為假),所以函式返回表示式2*fact(1)的值。
>呼叫fact(1),由於n=1(n<=1條件為真),所以函式返回數值1。
由於函式呼叫fact(1)返回值為1,因此,呼叫fact(2)返回值為2*fact(1)=2*1=2;因此,呼叫fact(3)返回值為3*fact(2)=3*2=6。
遞迴演算法並不是變成語言所必須的,不用它同樣可以實現相應的功能,如上面階乘例子中,遞迴函式fact可用下面的非遞迴方法實現(通常用迴圈或棧)實現:
int fact(int n)
return f;
}
C 函式 遞迴
1.函式一定要宣告,這符合 的嚴謹性 但是返回值是int型別的函式不需要宣告也不會報錯,但最好不要這麼做 2.乙個函式在它的函式體內呼叫它自身稱為遞迴呼叫。為了防止遞迴呼叫無終止地進行,必須在函式內有終止遞迴呼叫的手段 遞迴函式構成條件 自己呼叫自己 存在乙個條件能夠讓遞迴結束 問題的規模能夠縮小 ...
遞推遞迴 C 遞迴的函式
題目 description 給定乙個函式 f a,b,c 如果 a 0 或 b 0 或 c 0 返回值為 1 如果 a 20 或 b 20 或 c 20 返回值為 f 20,20,20 如果 a b 並且 b c 返回 f a,b,c 1 f a,b 1,c 1 f a,b 1,c 其它情況返回 ...
C 遞迴的函式
description 給定乙個函式 f a,b,c 如果 a 0 或 b 0 或 c 0 返回值為 1 如果 a 20 或 b 20 或 c 20 返回值為 f 20,20,20 如果 a b 並且 b c 返回 f a,b,c 1 f a,b 1,c 1 f a,b 1,c 其它情況返回 f a...