C 遞迴函式

2021-07-30 18:25:17 字數 1053 閱讀 9292

如果乙個函式在其函式體內直接或間接地呼叫了自己,該函式就被稱為遞迴函式。遞迴函式是解決某些複雜問題的十分有效的方法。

》遞迴適用於:

#資料的定義形式按遞迴定義。

如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...