一、基本內(nèi)容:
C語(yǔ)言中的函數(shù)可以遞歸調(diào)用,即:可以直接(簡(jiǎn)單遞歸)或間接(間接遞歸)地自己調(diào)自己。
要點(diǎn):
1、C語(yǔ)言函數(shù)可以遞歸調(diào)用。
2、可以通過直接或間接兩種方式調(diào)用。目前只討論直接遞歸調(diào)用。
二、遞歸條件
采用遞歸方法來解決問題,必須符合以下三個(gè)條件:
1、可以把要解決的問題轉(zhuǎn)化為一個(gè)新問題,而這個(gè)新的問題的解決方法仍與原來的解決方法相同,只是所處理的對(duì)象有規(guī)律地遞增或遞減。
說明:解決問題的方法相同,調(diào)用函數(shù)的參數(shù)每次不同(有規(guī)律的遞增或遞減),如果沒有規(guī)律也就不能適用遞歸調(diào)用。
2、可以應(yīng)用這個(gè)轉(zhuǎn)化過程使問題得到解決。
說明:使用其他的辦法比較麻煩或很難解決,而使用遞歸的方法可以很好地解決問題。
3、必定要有一個(gè)明確的結(jié)束遞歸的條件。
說明:一定要能夠在適當(dāng)?shù)牡胤浇Y(jié)束遞歸調(diào)用。不然可能導(dǎo)致系統(tǒng)崩潰。
三、代碼
1 /* 2 設(shè)計(jì)一個(gè)函數(shù),用來計(jì)算b的n次方 3 4 遞歸的2個(gè)條件: 5 1.函數(shù)自己調(diào)用自己 6 2.必須有個(gè)明確的返回值 7 */ 8 #include <stdio.h> 9 int pow2(int b, int n);10 11 int main()12 {13 int c = pow2(3, 2);14 15 PRintf("%d/n", c);16 return 0;17 }18 19 /*20 pow2(b, 0) == 121 pow2(b, 1) == b == pow2(b, 0) * b22 pow2(b, 2) == b*b == pow2(b, 1) * b23 pow2(b, 3) == b*b*b == pow2(b, 2) * b24 25 1> n為0,結(jié)果肯定是126 2> n>0,pow2(b, n) == pow2(b, n-1) * b27 */28 29 int pow2(int b, int n)30 {31 if (n <= 0) return 1;32 return pow2(b, n-1) * b;33 }34 35 /*36 int pow2(int b, int n)37 {38 // 用來保存計(jì)算結(jié)果39 int result = 1;40 41 42 //result *= b;43 //result *= b;44 //result *= b;45 //result *= b;46 //....47 48 //n次49 50 51 for (int i = 0; i<n; i++)52 {53 result *= b;54 }55 56 return result;57 }*/
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注