题目描述:
一个数字链由数字的每位平方相加而成。例子:44->32->13->10->1->1 4*4+4*4=32,3*3+2*2=13.........给你一个数字N计算出N(包括N)以内的所有数据链最后的数是1的个数。1<=N<=10000所有子函数都写成递归的哦 !
我的代码:
#include<stdio.h>
int sum(int n)
{
int a,b;
if(n<10) //当 n 小于10时就不用再计算了,所以n<10是临界条件 ,返回n的值
return n;
else
{
a=0;
b=n;
while(b>0) //计算n的每位平方和 ,再将平方和继续计算下去
{
a=a+(b%10)*(b%10);
b=b/10;
}
return sum(a);
}
}
int main()
{
int n,x,i;
while(scanf("%d",&n)!=EOF)
{
x=0;
for(i=1;i<=n;i++) //统计从1—n有多少个数满足条件
{
if(sum(i)==1)
{
x++;
//printf("%d\n",i); //这一步可以输出满足条件的数
}
}
printf("%d\n",x);
}
return 0;
}