//写一个递归函数DigitSum(n),输入一个非负整数,返回组成它的数字之和
例如,调用DigitSum(1729),则应该返回1 + 7 + 2 + 9,它的和是19int DigitSum(int n)
解题思路:1> 分析题意,找递归的出口,要实现每个数之和必须先调出每个位上的数;
2> 我选择n<10为递归的出口,每次调用DigitSum让1729减去个位,直到
n<10,依次返回与n%10相加即可得到各个位上的数之和;
3> 返回计算结果,并输出。
源代码:
#include<stdio.h>
#include<stdlib.h>
//写一个递归函数DigitSum(n),输入一个非负整数,返回组成它的数字之和,
//例如,调用DigitSum(1729),则应该返回1 + 7 + 2 + 9,它的和是19int DigitSum(int n)
int DigitSum(int n)
{
if (n < 10)
{
return n;
}
return (n % 10) + DigitSum(n / 10);
}
int main()
{
printf("%d\n", DigitSum(1729));
system("pause");
return 0;
}
运行结果:

坚持,说起来容易,做起来难。告诉自己:你行!
该博客介绍了如何用C语言编写一个递归函数DigitSum(n)来计算非负整数的各位数字之和。通过设置n<10作为递归结束条件,每次调用函数减去个位数并将其与n%10相加,最终得到所有位上的数字总和。示例中给出了1729这个数字的计算过程。
1183

被折叠的 条评论
为什么被折叠?



