问题描述:
写一个递归函数,输入一个非负整数,找出组成它的数字之和。例如:输入1729,,则返回值该是1+2+7+9,输出数字则为19
解析:
拿到一个数字,要找出组成它的各个数字。
首先利用i=x%10求出它的余数,即最初的组成数字,x=x/10可算出下一个x值,例如若原来的数字为123,则此时x=12.以此类推:
代码如下:
#include<stdio.h>
int DigitSum(int x)
{
int sum,i;//i表示余数
if(x==0)
sum=0;
else
{
i=x%10;
x=x/10;
sum=i+DigitSum(x);
}
return sum;
}
int main()
{
int s = 0;
s = DigitSum(456);
printf("%d\n",s);
return 0;
}
结果如下: