问题:
递归实现每个数字每位之和,数字为非负整数。如:输入123 输出 6.
思路:
- 输入的数字为非负整数,所以,加一个判断,如果输入的数字不是正整数,则重新输入
- 递归实现每位之和,
- 先给每一位取下来,用%10,然后n/10变为下一个数字,再去计算下一个数字然后再%10取下来。因此重复的动作便是递归。
- 而递归两个条件:一个是结束条件,当n%10 为1,n/10 为0时,递归结束,返回----“0”。 一个是限制条件,怎么去不断接近结束条件,即题中n是怎么变化的,——n/10.
代码如下:
#include <stdio.h>
int sum(int n)
{
if(n < 1)
return 0;
else
return n%10 + sum(n/10);
}
int main()
{
printf("输入一个数字,返回它的各位数之和\n");
int n;
while(1)
{
scanf("%d",&n);
if(n>0)
break;
else
printf("输入有误,请重新输入正整数\n");
}
int weisum = sum(n);
printf("各位数之和为:%d\n",weisum);
return 0;
}
版权声明:本文为m0_59844149原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。