#include <stdio.h>
/*
题目名称
计算一个数的每位之和(递归实现)
题目内容:
写一个递归函数DigitSum(input),输入一个非负整数,返回组成它的数字之和。
例如,调用DigitSum(1729),则应该输出 1+7+2+9,它的和是19
输入:1729,输出:19
*/
//方法一
//int sum = 0; //声明一个全局变量,存放总和
//int DigitSum( int input) {
// int yushu = input % 10; //余数
// int shang = input / 10; //商
// sum += yushu;
//
// if (shang != 0) {
// DigitSum(shang);
// }
// return sum;
//}
//方法二
int DigitSum(int input) {
if (input > 9) {
return DigitSum(input / 10) + input % 10; // 1729 拆分为四个余数相加
}
else {
return input;
}
}
int main() {
int input = 0;
printf("请输入一个正整数:");
do {
scanf_s("%u", &input);
if (input < 0) {
printf("输入非法,请重新输入一个正整数:");
}
} while (input < 0);
int output = DigitSum(input);
printf("%d\n",output);
return 0;
}
计算一个数的每位之和(C语言递归实现)
最新推荐文章于 2023-11-27 10:37:44 发布