#define _CRT_SECURE_NO_WARNINGS 1标签:10,每位,return,递归,1729,int,DigitSum,计算,printf From: https://blog.51cto.com/EddieLai/6113496
#include <stdio.h>
/*
思路:
n n < 10
DigiSum(n) =
DibiSum(n/10)+n%10 // 前n-1位之和+第N位
*/
int DigitSum(int n)//1729
{
if (n > 9)
return DigitSum(n / 10) + n % 10;//n%10求出个位数字,12,123,1234。根据二位数而来
else
return n;//只有一位数直接return
}
int main()
{
/*【题目名称】
计算一个数的每位之和(递归实现)
【题目内容】
写一个递归函数DigitSum(n),输入一个非负整数,返回组成它的数字之和
例如,调用DigitSum(1729),则应该返回1+7+2+9,它的和是19
输入:1729,输出:19*/
int n;
while (1)
{
printf("请输入一个非负整数数", &n);
scanf("%d", &n);
if (n < 0)
printf("请重新输入\n");
else
printf("%d", DigitSum(n));
}
return 0;
}