我需要迭代地和递归地计算这个求和,我已经做了迭代方法并且它工作正常。但我无法弄清楚如何做递归的。
总和将如下:1 + 3 + 5 + 9 + ... + 2n -1
这是迭代的:
public int dIt(int n) {
int sum = 0;
for (int i = 1; i <= n; i = 2 * i - 1) {
if (i <= 1) {
sum += i;
i = 2;
} else {
sum += i;
}
}
return sum;
}
是否可以在每次递归通话时都不带计数器?也就是说,只使用n。我认为它必须倒退,从n到0,但我不知道该怎么做。
我知道我还没有这个方法的代码,但是我没有要求这个,我想对如何考虑解决方案提供一些帮助。
提前致谢
答案 0 :(得分:0)
您需要定义:
1)案例基础:
if(n==1) return 1
2)步骤:
else return (doIt(n-1)) + (2*n-1)
答案 1 :(得分:-1)
public int doIt(int n) {
if (n == 1)
return 1;
else
return 2 * n - 1 + doIt(n - 1);
}