写一个递归函数DigitSum(n),输入一个非负整数,返回组成它的数字之和,
例如,调用DigitSum(1729),则应该返回1+7+2+9,它的和是19
思路:要想求得组成他的数字之和就得求得组成数字
组成数字的求法:个位直接模10可得,之后每次除10可将个位之前的1位数字也变为个位在模10即可得此数,由此可容易看出求组成数字之和符合递归定义,利用递归可以简单求得
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int DigitSum(int n) {
if (n < 10) { //递归结束条件
return n;
}
return (n % 10) + DigitSum(n / 10);
}
int main() {
int n = 0;
printf("请输入一个正整数:\n");
scanf("%d", &n);
printf("%d\n", DigitSum(n));
system("pause");
return 0;
}