题目: 一个数字链由数字的每位平方相加而成。 例子:44->32->13->10->1->1 .4*4+4*4=32,3*3+2*2=13 ......... 给你一个数字N计算出N(包括N)以内的所有数据链最后的数是1的个数。1 <=N <=10000所有子函数都写成递归的哦!样式输出input N:10011013192328313244496870798286919497100 #include <stdio.h>#include <conio.h>#include <assert.h>#define SQUARE(a) a*aint main(){ int n; int i; void num2digits(int n, int *digits,int *count); int recursive(int n); puts("input N:"); scanf("%d",&n); for(i=1;i<=n;i++) { if(recursive(i)==1) printf("%d\n",i); } getch(); return 0;}void num2digits(int n, int *digits,int *count){ if(n>0) { *count+=1; digits[0]=n%10; num2digits(n/10,digits+1,count); }}int recursive(int n){ int squaresum=0; int num_digits=0; int arr[7]; int i; if(n>=10) { num2digits(n, arr, &num_digits); for(i=0;i<num_digits;i++) squaresum+=SQUARE(arr[i]); return recursive(squaresum); } else return n;}

评论