我想显示导致变量'number'的每个数字。
例如,如果数字为5,我希望结果为1 2 3 4 5.我有一个返回值的错误,我不知道为什么。如何使用递归返回结果?
Nlpneutralfeature
答案 0 :(得分:3)
您正在混合递归和迭代。在递归解决方案中不需要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)
步骤:这非常重要,因为它会阻止您的递归不间断地进入负区域。这被称为递归的基本情况 - 即,当您执行固定数量的工作或根本没有工作时。
答案 1 :(得分:2)
您的代码无法编译,您的else
没有if
。
您要做的是:
import java.util.Scanner;
public class SumOfNumbers {
public static void main(String[] args) {
Scanner keyboard = new Scanner(System.in);
System.out.println("Number?");
int number = keyboard.nextInt();
recursion(number);
}
public static void recursion(int number)
{
if (number>1)
{
recursion(number-1);
System.out.print(number);
}
else {
System.out.print(number);
}
}
}
答案 2 :(得分:1)
这个简短的代码也会正确打印数字。
String[]