问题:求类似 3 + 33 + 333 + 3333 + ...(怎么样够幼稚吧!)
上图书中的代码,是正确的解法吗,我好像没有调试出来,真的不知所措。感叹“尽信书不如无书”。
书上原本是有一种方法的,但是做觉得不是很明白,也许是推得的现成公式吧,显得很抽象,因此自己想了第一种方法,自我感觉比书上的好理解。(不想抄书上的方法,也似乎是看不懂那种方法)
// 3 + 33 + 333 + 3333 + ...
#include <iostream>
using namespace std;
int create_same(int base, int n);
int main(void){
int i = 1, sum = 0;
for(; i <= 4; i++) {
sum += create_same(3, i);
}
cout << "The result is " << sum << endl;
}
int create_same(int base, int n) {
int sum, i, j;
if(n < 1) {
cout << "Error!" << endl;
return -1;
}
sum = 0;
j = i = 1;
while(j <= n) {
sum += i;
i *= 10;
j++;
}
sum *= base;
return sum;
}
后来一想这不就是数据结构算法书中的递归问题吗,又想了一种方法,都觉得比书上的好理解,难道我真的变聪明了吗?
// 3 + 33 + 333 + 3333 + ...
#include <iostream>
using namespace std;
int func(int n);
int E_n(int n);
int x_xx_xxx(int n, int b);
int main(void) {
int num = x_xx_xxx(4, 3);
cout << "The result is " << num << endl;
}
int x_xx_xxx(int n, int b) {
int i, result;
for(i = 1; i <= n; i++) {
result += func(i);
}
return b * result;
}
int func(int n) {
int result;
if(n == 1) {
result = 1;
return result;
} else {
result = func(n - 1) + E_n(n);
return result;
}
}
int E_n(int n) {
int result;
if(n == 1) {
result = 1;
return result;
} else {
result = E_n(n - 1) * 10;
return result;
}
}