本周的第一道
题目:给定一个非负整数 num,反复将各个位上的数字相加,直到结果为一位数。
示例:输入: 38
输出: 2
解释: 各位相加的过程为:3 + 8 = 11, 1 + 1 = 2。 由于 2 是一位数,所以返回 2
解题思路:取出数据的每一位,进行相加,直至满足条件。
下面是C语言采取循环的解决方法
#include<stdio.h>
int main()
{
int data ,sum ,t ,temp;
scanf("%d",&data);
temp = data;
while(temp / 10 != 0){
data = temp;
sum = 0;
while(data){
t = data % 10;
sum += t;
data /= 10;
}
temp = sum;
}
printf("%d",sum);
return 0;
}
本题也可采取递归
int num(int x)
{
int res = 0 ,temp;
temp = x;
if(temp / 10 == 0){
res += temp;
}else{
while(x){
temp = x % 10;
res += temp;
x /= 10;
}
if(res / 10 != 0){
return num(res);
}
}
return res;
}