**题目描述:**编程求和:s=a+aa+aaa+aaaa+ „„+aaaa„aaa(n个),其中a为1~9中的一个数字。 提示:若第一项为a , 以后每一项由前一项乘以10加上a递推得到,然后求和。
此题为简单递归问题。
第一种:给出算式第一个数a(例如:1,2,3…9),和式子末a的个数(即题中的n)
代码如下:
#include<stdio.h>
#include<stdlib.h>
int sum = 0;//定义一个全局变量保存算式的和,以免在递归中不断初始化
int MUL(int n,int m)
{
static int b = n;//定义一个静态量b存储a,方便后面对个位数的处理
sum += n;
n = n * 10 + b;
m--;
if (m <= 0)
return sum;
return MUL(n, m);
}
int main()
{
int a,t;//a为输入的个位数,t为式子末a的个数
scanf_s("%d %d", &a,&t);
MUL(a,t);
printf("%d", sum);
system("PAUSE");
}
第二种:较第一种更为简洁,直接给出式子最后一个数(即题中的n个a)
#include<stdio.h>
#include<stdlib.h>
int sum = 0;//定义一个全局变量保存算式的和,以免在递归中不断初始化
int MUL(int n)
{
sum += n;
n = n / 10;
if(n==0)
return sum;
return MUL(n);
}
int main()
{
int a;//a为输入式子最后一个数
scanf_s("%d", &a);
MUL(a);
printf("%d", sum);
system("PAUSE");
}
学习中,欢迎交流,指导