题目链接:https://ac.nowcoder.com/acm/problem/15173
思路:
1.对变换前后的每一层检查是否满足条件,若满足,返回这个数,若不满足,返回以这个数为参数的函数
2.如何检查:
(1)定义一个变量,把要检查的数取模后得的个位数赋给这个变量
(2)判断要检查的数是否大于0,若大于10,则开始循环,由于前面已经计算了个位数,所以对要检查的数除以10,再把模10后得到的十位数加上变量再赋给这个变量,直到要检查的数小于10
ac代码:
#include<bits/stdc++.h>
using namespace std;
int magic_change(int n)
{
int s=n%10;
while(n>=10)
{
n/=10;
s+=n%10;
}
if(s<10) return s;
return magic_change(s);
}
int main()
{
int n;
cin>>n;
cout<<magic_change(n);
return 0;
}