《C程序设计(第三版)》 □谭浩强 清华大学出版社
p129 习题
6.3:求Sn = a + aa+ aaa+ ... + aa...a(n位) 之值,其中a是一个数字,n表示a的位数,例如:
2 + 22 + 222 + 2222 + 22222 (此时n=5), n由键盘输入。
非递归实现:
int func1(int a, int n)
{
int sum = 0 , b = 1, c = a;
for(int i=0; i<n; i++)
{
sum = sum + c;
b = 10 * b;
c = a * b + c;
}
return sum;
}
递归实现,其中sum=0, item = 0:
int func2(int& sum, int& item, int a, int n)
{
if(n == 1)
{
item = a;
}
else
{
item = func2(sum, item, a, n-1) * 10 + a;
}
sum += item;
return item;
}
本文介绍了使用C语言实现求Sn=a+aa+aaa+...+aa...a(n位)的值的方法,其中包括非递归和递归两种实现方式。通过对具体示例的解析,帮助读者理解算法的设计思路。
1万+

被折叠的 条评论
为什么被折叠?



