一、基本內容:
C語言中的函數可以遞歸調用,即:可以直接(簡單遞歸)或間接(間接遞歸)地自己調自己。
要點:
1、C語言函數可以遞歸調用。
2、可以通過直接或間接兩種方式調用。目前只討論直接遞歸調用。
二、遞歸條件
采用遞歸方法來解決問題,必須符合以下三個條件:
1、可以把要解決的問題轉化為一個新問題,而這個新的問題的解決方法仍與原來的解決方法相同,只是所處理的對象有規律地遞增或遞減。
說明:解決問題的方法相同,調用函數的參數每次不同(有規律的遞增或遞減),如果沒有規律也就不能適用遞歸調用。
2、可以應用這個轉化過程使問題得到解決。
說明:使用其他的辦法比較麻煩或很難解決,而使用遞歸的方法可以很好地解決問題。
3、必定要有一個明確的結束遞歸的條件。
說明:一定要能夠在適當的地方結束遞歸調用。不然可能導致系統崩潰。
三、代碼
1 /* 2 設計一個函數,用來計算b的n次方 3 4 遞歸的2個條件: 5 1.函數自己調用自己 6 2.必須有個明確的返回值 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,結果肯定是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 // 用來保存計算結果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 }*/
|
新聞熱點
疑難解答