问题描述:
写一个递归函数DigitSum(n),输入一个非负整数,返回组成它的数字之和,
例如,调用DigitSum(1729),则应该返回1+7+2+9,它的和是19
问题分析:
这道题也可以用循环和递归两种办法来做。
源代码:
方法一:递归
#include <stdio.h>
#include <windows.h>
#pragma warning (disable :4996)
int DigitSum2(int n)
{
if (n < 10)
{
return n;
}
return n % 10 + DigitSum2(n / 10);
}
int main()
{
int n = 0;
int sum = 0;
printf("请输入一个正整数n: ");
scanf("%d", &n);
sum = DigitSum1(n);
printf("结果为:%d\n", sum);
system("pause");
return 0;
}
方法二:循环
#include <stdio.h>
#include <windows.h>
#pragma warning (disable :4996)
int DigitSum1(int n)//迭代,非递归
{
int a = 0;
int sum = 0;
while (n != 0)
{
a = n % 10;
n = n / 10;
sum += a;
}
return sum;
}
int main()
{
int n = 0;
int sum = 0;
printf("请输入一个正整数n: ");
scanf("%d", &n);
sum = DigitSum1(n);
printf("结果为:%d\n", sum);
system("pause");
return 0;
}