苏大真题:给定一个值,求出所有得到新值的个数
本题源于苏州大学872考研真题(2013.5)
给定一个值,求出所有得到的新值的个数。例如给出值为345,将其各个位数字相加得到新值12,对12各个位数字相加得到新值为3,则对345得到的新值的个数为3个(包括其本身)。
代码如下:
递归算法
int plus_item(int n,int i){//i =0
if(n/10==0) return i+1;
int sum = 0;
else{
while(n/10!=0){
sum +=n%10;
n = n/10;
}
sum+=n;
return plus_item(sum,i+1);
}
}
非递归算法(其实就是用while起到递归作用)
int plus_item(int n){
int i = 1;
int sum;
while(n/10!=0){
sum = 0;
while(n/10!=0){
sum+=n%10;
n = n/10;
}
sum+=n;
n = sum;
i++;
}
return i;
}
代码是自己写的,非最优解,不保证正确性,欢迎批评指正、交流讨论。