将公式放入for循环
putting a formula into a for loop
我正在尝试将此公式放入循环中
The function to put inside the loop
我使用 if 语句在输入为零时给出特定结果,但如果输入为 1 或更高,for 循环应该 运行.
我被问到一个关于递归的问题,我应该以 3 种不同的方式执行它,其中一种使用我已经制作的循环和 运行s 但给出了意想不到的结果。
public class Assignment5Recursion {
public static int puzzleLoop(int n) {
int v=0;
if(n>=1) {
for(int i=1; i<=n+1; i++) {
v = (2*i-1);
}
return ((2*n+1)+2*v);
}
else {
return 1;
}}}
如果n是1,结果应该是5,如果n是2,结果应该是13,如果n是3,结果应该是25,如果n是7,结果应该是113,但是出于某种原因,我得到了不同的输出,所以我假设我把循环设置错了。
Σ(2*i-1), sum 应该在循环中结转
将循环中的语句更改为 v = v+(2*i-1) 并将条件更改为 i<=n
您需要进行 2 处更改。
1) 循环将从 i=1
到 i=n+1
运行 而你只需要它到 运行 直到 i=n
.
所以for循环退出条件应该是i<n+1
或者i<=n
2) 变量 v 将在循环的每个 运行 被替换,因为它每次都会被分配一个新值。
因此根据您的代码,v 的值将始终为 v=2*(n+1)-1
。
您需要这样做 v += (2*i-1)
以便将 v 的新值添加到旧值以获得 sigma(sum)。
如下替换 for 循环将解决您的问题。
for(int i=1; i<n+1; i++) {
v += (2*i-1);
}
或
for(int i=1; i<=n; i++) {
v = v+(2*i-1);
}
您犯了两个错误,您没有添加到 v 而不是在每次迭代时更新,因此总值不会被求和。由于您使用的是 <=
,因此您不需要迭代到 n+1
。所以这里有一个修改后的puzzleLoop
方法给你
public static int puzzleLoop(int n) {
int v = 0;
if (n >= 1) {
for (int i = 1; i <= n; i++) {
v += (2 * i - 1);
}
return ((2 * n + 1) + 2 * v);
}
return 1;
}
您也不需要 else 部分语句,因为如果它不在 if
块中,您总是可以安全地 return 1.
我正在尝试将此公式放入循环中
The function to put inside the loop
我使用 if 语句在输入为零时给出特定结果,但如果输入为 1 或更高,for 循环应该 运行.
我被问到一个关于递归的问题,我应该以 3 种不同的方式执行它,其中一种使用我已经制作的循环和 运行s 但给出了意想不到的结果。
public class Assignment5Recursion {
public static int puzzleLoop(int n) {
int v=0;
if(n>=1) {
for(int i=1; i<=n+1; i++) {
v = (2*i-1);
}
return ((2*n+1)+2*v);
}
else {
return 1;
}}}
如果n是1,结果应该是5,如果n是2,结果应该是13,如果n是3,结果应该是25,如果n是7,结果应该是113,但是出于某种原因,我得到了不同的输出,所以我假设我把循环设置错了。
Σ(2*i-1), sum 应该在循环中结转
将循环中的语句更改为 v = v+(2*i-1) 并将条件更改为 i<=n
您需要进行 2 处更改。
1) 循环将从 i=1
到 i=n+1
运行 而你只需要它到 运行 直到 i=n
.
所以for循环退出条件应该是i<n+1
或者i<=n
2) 变量 v 将在循环的每个 运行 被替换,因为它每次都会被分配一个新值。
因此根据您的代码,v 的值将始终为 v=2*(n+1)-1
。
您需要这样做 v += (2*i-1)
以便将 v 的新值添加到旧值以获得 sigma(sum)。
如下替换 for 循环将解决您的问题。
for(int i=1; i<n+1; i++) {
v += (2*i-1);
}
或
for(int i=1; i<=n; i++) {
v = v+(2*i-1);
}
您犯了两个错误,您没有添加到 v 而不是在每次迭代时更新,因此总值不会被求和。由于您使用的是 <=
,因此您不需要迭代到 n+1
。所以这里有一个修改后的puzzleLoop
方法给你
public static int puzzleLoop(int n) {
int v = 0;
if (n >= 1) {
for (int i = 1; i <= n; i++) {
v += (2 * i - 1);
}
return ((2 * n + 1) + 2 * v);
}
return 1;
}
您也不需要 else 部分语句,因为如果它不在 if
块中,您总是可以安全地 return 1.