gpt4 book ai didi

java - 如何使用for循环方法和递归方法计算连续整数?

转载 作者:行者123 更新时间:2023-11-30 12:06:38 36 4
gpt4 key购买 nike

我需要计算 1.) for 循环方法和 2.) 递归方法中连续整数的总和。这两种方法都是采用两个 int 参数的静态 int 方法(一个是起始 int,另一个是它后面的 int 的数量)。例如,如果我输入 (3, 3),输出应该是 18,因为 3 是起始数字,后面的 3 个整数是 4、5 和 6。当你将它们全部加起来时 (3+4+5 +6) 你得到 18。这两种方法都在做同样的数学运算,除了一个是用 for 循环做的,另一个是递归做的。

我在这里遇到的问题是我的 for 循环方法没有正确总结。当我输入 (3, 3) 时,输出为 31。此外,我不太确定如何编写递归方法,因为我的 for 循环方法不起作用。我可以得到一些帮助吗?

此外,没有数组或数组列表。该代码应该能够在不使用它们的情况下工作。

public static int consecSum(int startingNum, int numInts){
for (int i = numInts; i>0; i--){
startingNum += (startingNum + 1);
}
return startingNum;
}
public static int recursSum(int startingNum, int numInts) {
if (startingNum == 0) {
return 0;
} else if (numInts == 0) {
return startingNum;
}
return startingNum + recursSum(startingNum + numInts, numInts - 1);
}
3 \\startingNum (theres more code not shown where I use a scanner object to input these)
3 \\numInts
31 \\for loop output
\\The recursive method just prints an error message

最佳答案

For循环

您的 for 循环解决方案中的问题是您认为“最后一个整数”实际上是“最后一个总和”。你是想说

startingNum = 3
startingNum = 3 + 4
startingNum = 7 + 5
startingNum = 12 + 6

但是由于您总是将新的总和保存在 startingNum 本身中,所以这就是正在发生的事情

startingNum = 3
startingNum = 3 + 4
startingNum = 7 + 8 (because startingNum + 1 = 7 + 1 = 8)
startingNum = 15 + 16

试试这个

public static int consecSum(int startingNum, int numInts){
int nextNum = startingNum + 1;
for (int i = numInts; i>0; i--){
startingNum += nextNum;
nextNum++;
}
return startingNum;
}

递归

你几乎拥有它。根据我所见,您的思考过程是如果整数个数为 0 则返回起始数字,否则返回起始数字 + 对下一个数字调用的方法的输出。这绝对有效。尝试这些编辑

public static int recursSum(int startingNum, int numInts) {
if (numInts == 0) {
// eventually the numInts will become 0, meaning there's no
// numbers to add after this startingNum, so just return it
return startingNum;
}

// otherwise, if numInts > 0, that means there are other numbers to add so
// return the sum of the current number with the output of the function called
// on the next number (while not forgetting to decrease the number of integers
// we should consider after that)
return startingNum + recursSum(startingNum + 1 /* next number */, numInts - 1 /* decrease the number of integers to consider after that */);
}

关于java - 如何使用for循环方法和递归方法计算连续整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55444595/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com