int main()
{
unsigned int i = 0;
scanf("%d", &i);
int ret = DigitSum(i);
printf("ret=%d", ret);
return 0;
}
首先,写出main函数
unsigned int表示无符号整数
scanf("%d", &i);表示把键盘上输入的数字传递到i地址里去,通俗的讲,让我们给i赋值
int ret = DigitSum(i);:DigitSum(i)表示我们创建的函数,实际参数是i,函数的返回值是int类型(整型)
接下来写函数部分
int DigitSum(int i)
{
if (i > 10)
{
return DigitSum(i / 10) + i % 10;
}
else
{
return i;
}
}
首先,我们要计算所输入的数字组成数字之和,假设我们输入的是1729,如何表示1,7,2,9的和,我们sum(1,2,7,9)=1729%10+172%10+17%10+1%10,我们要对1729先取10的余数,再去除1729/10,再取172的余数,循环往复,取出余数的和就是(1,7,2,9)的和
用递归的方法,限制条件是if(i>10),第一次进入循环,返回的是DigitSum(172)+9 第二次进入循环返回的是DigitSum(17)+2+9,第三次为DigitSum(1)+7+2+9,当进行到第四次时,1<10,返回1,结果为1+7+2+9
1729
ret=19请按任意键继续. . .
检验如图所示