数字递归之和

时间:2016-02-10 20:48:19

标签: java recursion

我想显示导致变量'number'的每个数字。

例如,如果数字为5,我希望结果为1 2 3 4 5.我有一个返回值的错误,我不知道为什么。如何使用递归返回结果?

Nlpneutralfeature

3 个答案:

答案 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[]