|
>int digital_root(数 n) {
> if ( n が一桁じゃない ) {
> return digital_root(nの各桁を全部足したもの);
> }
> return n; // 一桁ならおしまい。
>}
なるほどぉーー!!!
私が頑張って作ったものはこんなものになりました。
#include<stdio.h>
#define SIZE 255
int divide(int n,int *a) {
int c,d;
for(c=0,d=10;n>0;) {
*a=n%d;
n=n/d;
*a++;
c++;
}
return c;
}
int digital_root(int n) {
int a[SIZE],ans,c,i;
ans=n;
for(;ans>=10;) {
c=divide(ans,a);
for(i=0,ans=0;i<c;i++) {
ans+=a[i];
}
}
return ans;
}
int main(void) {
int ans,n;
printf("n=");
scanf("%d",&n);
if(n<=0) {
printf("Error");
exit(-1);
}
ans=digital_root(n);
printf("digital_root(%d)=%d\n",n,ans);
return 0;
}
どうでしょうか???
チェックお願いします。自分なりにとってもがんばりました。。。
|