2、数字求和:
写一个递归函数DigitSum(n),输入一个非负整数,返回组成它的数字之和
例如,调用DigitSum(1729),则应该返回1 + 7 + 2 + 9,它的和是19
例如输入:1729,输出:19
思路:大事化小,个位数的9最容易拿下来
#include<stdio.h> int DigitSum(int n) { if (n > 9) { return DigitSum(n / 10) + n % 10; } else { return n; } } int main() { int num = 1729; int sum = DigitSum(num); printf("%d\n", sum); return 0; }
3、求n的k次方:
编写一个函数实现n的k次方,使用递归实现。
#include<stdio.h> double my_pow(int n, int k) { if (k > 0) { return n * my_pow(n, k - 1); } else if (k == 0) { return 1; } else { return 1.0 / my_pow(n, -k); } } int main() { int n = 0; int k = 0; double ret = 0.0; scanf("%d%d", &n, &k); ret = my_pow(n, k); printf("%lf\n", ret); return 0; }
递归的扩展:
经典题目:
1、汉诺塔问题
2、青蛙跳台阶问题