《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;
}