寫一個遞歸函數DigitSum(n),輸入一個非負整數,傳回組成它的數字之和。
例如,調用DigitSum(1729),則應該傳回1 + 7 + 2 + 9,它的和是19。
分析:1729—(172)+9—(17)+2+9—1+7+2+9
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<string>
int DigiSum(int n)
{
int a= 0;
int ret = 0;
while (n > 0)
{
return ret = (n % 10) + DigiSum(n / 10);
}
return 0;
}
int main()
{
int a = 0;
printf("請輸入一個非負整數:\n");
scanf("%d", &a);
printf("%d", DigiSum(a));
system("pause");
return 0;
}
運作結果如下:
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiI0gTMx81dsQWZ4lmZf1GLlpXazVmcvwFciV2dsQXYtJ3bm9CX9s2RkBnVHFmb1clWvB3MaVnRtp1XlBXe0xCMy81dvRWYoNHLwEzX5xCMx8FesU2cfdGLwMzX0xiRGZkRGZ0Xy9GbvNGLpZTY1EmMZVDUSFTU4VFRR9Fd4VGdsYTMfVmepNHLrJXYtJXZ0F2dvwVZnFWbp1zczV2YvJHctM3cv1Ce-cmbw5CO1QTOxQjZzIGNxMGZ3QjNzYzX3MTO0ATM0AzLcFTMyIDMy8CXn9Gbi9CXzV2Zh1WavwVbvNmLvR3YxUjLyM3Lc9CX6MHc0RHaiojIsJye.png)