这个问题用直接递归怎么做?
求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;
}