递归数字打印

时间:2010-11-02 14:26:38

标签: java recursion

如果给我们5号,它需要在控制台上打印出来,如1,2,3,4,5。这需要递归完成。 (最好是Java)

如果有人想知道这些不是作业问题。我从现在起一周内练习中期。

抱歉没有发布我的作品。我正在做类似下面的事情:但是对于打印其余数字的位置感到困惑,以及如何使用(n - 1)递归调用方法。雅各布和他的职位帮助了我。感谢所有帮助过的人。

public void writeNums(int n) {
    if (n < 1)
        throw new IllegalArgumentException();
    if (n == 1) {
        System.out.print("1, ");
    }
    writeNums(n - 1);

5 个答案:

答案 0 :(得分:8)

我们不打算为你编写代码,但递归的工作方式是你有一个调用自身的函数,传入一些为每次调用而改变的参数。它需要处理“基本情况”,其中函数执行某些操作但不需要再调用自身,并且还处理“一般情况”,其中函数既执行某些操作又调用自身来完成需要完成的任何操作。所以:

function printNumbersUpTo( current )
    if current is 1, print 1 and return. //base case
    otherwise, call printNumbersUpTo( current - 1), then print current, and return. //general case

答案 1 :(得分:2)

让我们从编写一个功能不多的函数开始,但它是基本递归函数的一些明显的框架

void Print(int num)
{
    if (num <= 0)
        return;

    Print(num - 1);
}

现在尝试考虑将atual打印添加到控制台的位置,以使数字以正确的顺序显示。

答案 2 :(得分:1)

如果您在解决此问题时遇到困难,可能需要查看一般的递归方式:http://en.wikipedia.org/wiki/Recursion_%28computer_science%29

考虑如何处理基本案例,并考虑如何处理一般案例。如果做得好,通常会感觉非常简单。

答案 3 :(得分:0)

private static String Print(int num) {
    if (num <= 1) // base case
        return Integer.toString(num);
    else
        return Print(num - 1) + ", " + num;
    }
}

答案 4 :(得分:0)

您可以非常简单地实现它,没有这种特殊逻辑的唯一事情就是您必须确定首先要打印的打印机制,通过我的代码您就能理解

public static void print(int n) {
        if (n <= 0) {
            return;
        }

        print(n - 1);
        System.out.print(n+ " ");
    }

输入:5 输出:1,2,3,4,5