之前一直对递归不太熟悉,不明白递归的原理,经过这两道题,有点理解递归本质就是一个出栈入栈的过程,不过具体实现还需要进一步学习。
首先题目如下:
1.编写一个函数实现n^k,使用递归实现
2.写一个递归函数digitSum(n),输入一个非负整数,返回组成它的数字之和,例如,调用DigitSum(1729),则应该返回1+7+2+9,它的和是19。
分析过程由下图可说明:
代码如下:
#include <stdio.h>
int powNK(int n, int k)
{
if (k == 0)
return 1;
else
return n * powNK(n, k - 1);
}
int digitSum(unsigned int num)
{
if (num < 10)
return num;
else
return num % 10 + digitSum(num / 10);
}
int main()
{
printf("%d\n", powNK(3, 4));
printf("%d\n", digitSum(1729));
return 0;
}