写一个递归函数DigitSum(n),输入一个非负整数,返回组成它的数字之和,例如,调用DigitSum(1729),则应该返回1+7+2+9,它的和是19

题目要求
写一个递归函数DigitSum(n),输入一个非负整数,返回组成它的数字之和,例如,调用DigitSum(1729),则应该返回1+7+2+9,它的和是19。
问题分析
首先我 对这个题目的分析为,如果要将每位数都相加,则要找出这个数的每一位,然后将他们的每位都加在一起就得到了这个数的每位数之和,先将此数模上10,得到最后一位数,然后再除以10,再模上10,得到倒数第二位数…以此类推,得到每位数,然后相加。
主要递归代码如下:

int DigitSum(int n)
{
	if (n<=9)
	{
		return n;
	}
	//返回每位数相加之和。
	if (n>9)
	{
		return n%10+DigitSum(n/10);
	}
	return 0;
	//n%10  n/10 n%10 n/10
}

全部代码如下:

#define _CRT_SECURE_NO_WARNINGS    1
int DigitSum(int n)
{
	if (n<=9)
	{
		return n;
	}
	//返回每位数相加之和。
	if (n>9)
	{
		return n%10+DigitSum(n/10);
	}
	return 0;
	//n%10  n/10 n%10 n/10
}
#include <stdio.h>
#include <stdlib.h>
int main()
{
	int n = 0;
	printf ("请输入一个非负整数:>");
	scanf ("%d",&n);
	DigitSum(n);
	printf ("%d\n",DigitSum(n));



    system ("pause");
	return 0;
}

展示结果如下:

写一个递归函数DigitSum(n),输入一个非负整数,返回组成它的数字之和,例如,调用DigitSum(1729),则应该返回1+7+2+9,它的和是19