gpt4 book ai didi

java - 数字之和递归

转载 作者:行者123 更新时间:2023-12-01 07:52:14 27 4
gpt4 key购买 nike

我想显示变量“number”之前的每个数字。

例如,如果数字是 5,我希望结果是 1 2 3 4 5。返回值时出现错误,我不知道为什么。如何使用递归返回结果?

public class SumOfNumbers {

public static void main(String[] args) {
Scanner keyboard = new Scanner(System.in);

System.out.println("Number?");
int number = keyboard.nextInt();
System.out.println(recursion(number));
}
public static int recursion(int number)
{
for (int i=0;i>number;i++)
{
return recursion(i);
}
else {
return number ;
}
}

}

最佳答案

您正在混合递归和迭代。在递归解决方案中,for 循环是不必要的。

想象一下你的递归解决方案,就好像它已经存在一样:如果给你一个程序“打印最多n-1的数字”,并且要求你编写一个程序,你会怎么做打印最多 n 的数字?解决方案非常清楚 - 你可以这样写:

void myRecursiveProgram(int n) {
if (n == 0) {
return; // do nothing
}
printNumbersUpToN(n-1); // Go up to n-1 using the "magic solution"
System.out.println(n); // Complete the task by printing the last number
}

现在观察 myRecursiveProgram 是您的 printNumbersUpToN 程序,因此您需要做的就是重命名它:

void printNumbersUpToN(int n) {
if (n == 0) {
return; // do nothing
}
printNumbersUpToN(n-1);
System.out.println(n);
}

请注意 if (n == 0) 步骤:它非常重要,因为它可以防止递归不停地进入负值区域。这称为递归的基本情况 - 即当您执行固定工作量或根本不执行任何工作时的情况。

关于java - 数字之和递归,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35325595/

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