1. 程式人生 > >【C語言】用遞迴函式是實現函式功能的幾個例子

【C語言】用遞迴函式是實現函式功能的幾個例子

1.問題描述:寫一個遞迴函式DigitSum(n),輸入一個非負整數,返回組成它的數字之和。例如,呼叫DigitSum(1729),則應該返回1+7+2+9,它的和是19。

思路:這個題比較類似於求拆分整數,一個一個輸出。這個題多得一步是在拆分後,將這些數字加和。當這個數字被拆分的部分小於10,就沒有繼續拆分的必要了,所以它的逼近條件就是是否小於10。


int DigitSum(int num)
{
   if(num<10) 
       return num;
    else  
       return  num%10 + DigitSum(num/10);
}

int main()
{
    int
ret=DigitSum(1729); printf("%d\n",ret); system("pause"); }

這裡寫圖片描述

2.問題描述:用遞迴函式實現n^k。
思路:n的k次方計算也是遞迴實現的一個思路,它的逼近條件就是每次迴圈後的k減1,利用k來確定遞迴的條件。

int my_pow(int n,int k)
{
  if(k==0) 
        return 1;
    else 
        return n*my_pow(n,k-1);
}

int main()
{
    int ret=my_pow(3,3);
    printf("%d\n"
,ret); system("pause"); }

這裡寫圖片描述

很多簡單問題用遞迴解決都是比較容易的,但在寫遞迴函式時一定要考慮到遞迴函式的逼近條件。如果沒有逼近條件,程式就會一直執行,直到記憶體不夠程式崩潰。理清楚要實現功能和遞迴之間的聯絡,從而也能方便我們寫出逼近條件。