问题描述:
数根问题递归求解:输入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 root0=sum(x);if(root0<10&&root0>0)return root0;else root0=root(root0);
}int sum(int y) {int t=y,result=0;while(t>0) {result = result + t%10;t = t / 10;}return result;
}