【问题描述】
数根问题递归求解:输入n个正整数(输入格式中第一行为整数个数n,后续行为n个整数),输出各个数的数根。数根的定义:对于一个正整数n,我们将它的各个位相加得到一个新的数字,如果这个数字是一位数,我们称之为n的数根,否则重复处理直到它成为一个一位数,这个一位数也算是n的数根。例如:考虑24,2+4=6,6就是24的数根。考虑39,3+9=12,1+2=3,3就是39的数根。?
要求计算一个数的数根部分利用递归函数实现。
样例输入:
5
23 424 98 632 12345
样例输出:
5 1 8 2 6
测试输入:
2
39 999
测试输出:
3 9
测试输入:
2
54321 78906
测试输出:
6 3
#include <iostream>
#include <cmath>
using namespace std;
int root(int);
int sum(int);
int main()
{
int n;
cin>>n; //输入个数
int num;
for(int i=1;i<=n;i++)
{
cin >> num; //输入数值
cout << root(num) << " "; //得出数根
}
return 0;
}
int root(int x) //筛选数根,判断是否满足条件
{
int b;
b=sum(x);
if(b>=10) //如果大于等于10返回sum函数
{
b=sum(b);
return b;
}
else
return b;
}
int sum(int y) //求数根
{
int t=y,result=0;
while(t>0)
{
result = result + t%10;
t = t / 10;
}
return result;
}