【C語言】用遞迴函式是實現函式功能的幾個例子
阿新 • • 發佈:2019-02-06
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");
}
很多簡單問題用遞迴解決都是比較容易的,但在寫遞迴函式時一定要考慮到遞迴函式的逼近條件。如果沒有逼近條件,程式就會一直執行,直到記憶體不夠程式崩潰。理清楚要實現功能和遞迴之間的聯絡,從而也能方便我們寫出逼近條件。