这个问题用直接递归怎么做?
求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。
这个问题我用间接递归做的。
但是用直接递归却没做出来,谁指点下怎么用直接调用做这道题啊。。。。
谢谢、。。。。
# include <stdio.h> # include <stdlib.h> unsigned long getsum(unsigned long a,int n) { unsigned long result; if (n==1) result = a; else result = a+getsum(a*10+2,n-1); return result; } int main(void) { unsigned long a=2,result; int n; printf("请输入一个小于10的正整数:"); while(scanf("%d",&n)==1 && n < 10 && n > 0) { result=getsum(a,n); printf("结果是:%10lu \n",result); } return 0; }
# include <stdio.h> unsigned long getsum(unsigned long a,int n,int i) { unsigned long result; if (n==1) { result = a; printf("%lu",a); } else { printf("%lu+",a); result = a+getsum(a*10+i,n-1,i); } return result; } int main(void) { unsigned long result; int n,a; printf("请输入一个小于10的正整数:"); while(scanf("%d",&n)==1 && n < 10 && n > 0) { for(a=1;a<=9;a++) { result=getsum(a,n,a); printf("结果是:%lu\n",result); } } return 0; }