简单的递归

use*_*ser 2 java recursion loops function

我正在玩这个功能:

public class x {

public static void main(String[] args) {
recurse(10);
}

public static int recurse(int theNumber) {

    if(theNumber == 0) {
        return 0;
    }

    else
    {
        System.out.println(theNumber);
        theNumber--;
        recurse(theNumber);
        System.out.println(theNumber);
    }

    return -1;
}
}
Run Code Online (Sandbox Code Playgroud)

我得到了这个输出:

10 9 8 7 6 5 4 3 2 1 0 1 2 3 4 5 6 7 8 9按任意键继续...

这怎么可能?我明白从10到0的倒计时来自哪里......但它究竟是如何重新计算的?我很确定我错过了关于递归的基本概念.有人可以填空白吗?

Hab*_*bib 6

那是因为System.out.println(theNumber);你的方法中的最后一个.在递归调用方法和upcon完成方法后,它将打印这些值.

  • @user:为什么不使用调试器来完善程序?这比阅读一些评论更有启发性. (4认同)