在Java中使用递归计算(2n-1)的和
我需要迭代和递归地计算这个总和,我已经做了迭代方法,它工作得很好。但是我不知道如何进行递归 总和是这样的:1+3+5+9+…+2n−一, 这是一个迭代过程:在Java中使用递归计算(2n-1)的和,java,recursion,Java,Recursion,我需要迭代和递归地计算这个总和,我已经做了迭代方法,它工作得很好。但是我不知道如何进行递归 总和是这样的:1+3+5+9+…+2n−一, 这是一个迭代过程: 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; } el
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;
}
public int dIt(int n){
整数和=0;
对于(int i=1;i您需要定义:
1) 案例库:
if(n==1) return 1
2) 步骤:
对不起,这是你的家庭作业;那么除了“这是你通常做递归的方式”(这是你自己可以轻松研究的事情)之外,你希望我们告诉你什么呢?学习的部分是思考……我到底是怎么做的?当你走“轻松的弯路”时避免这一部分…还有什么需要你学习的呢?1.纯代码答案不好2.OP明确表示他不想要完整的代码,而不是答案!然而,当使用迭代和递归方法时,我得到的结果不同。例如,如果我对n=20运行它,迭代方法返回35,而递归方法返回35rns 400。我认为正确的方法是迭代法,因为求和将是:1+3+5+9+17=35。你认为问题出在哪里?再次感谢你。我认为你的迭代法是错误的。对于n=20,结果将是:39+37+35+33+31+…+1=400在迭代法中,你的For可能是:For(inti=0;iHi,很抱歉花了这么长时间回复,我一直在忙学校的事。通过迭代,求和将是1+3+5+9+17=35。这不是奇数的和,而是(2n-1).我想你发布的递归是对奇数求和。或者我没有正确理解这个练习。再次感谢你的帮助!
if(n==1) return 1
else return (doIt(n-1)) + (2*n-1)