首页 > 解决方案 > 使用return语句递归打印数字

问题描述

我正在使用递归打印数字,直到 2(数字),我将零(0)作为输入传递并递归调用它,直到数字达到 2。我已经尝试过这段代码,它显示了正确的输出。

class Test{
    public static void main(String[] args) {
        rec(0);
    }
    private static void rec(int num){
        if(num<=2){
            rec(++num);
        }
        System.out.println(num);
    }
}

但我想通过以下方式做到这一点。

class Test{
    public static void main(String[] args) {
        rec(0);
    }
    private static void rec(int num){
        if(num==2){
            return;
        }
        rec(++num);
        System.out.println(num);
    }
}

预期输出:

2,1,0

但它显示:

2,1

为什么会这样?

标签: javarecursion

解决方案


++numincrements num,这(如这里)使代码更难理解。

试着打电话rec(num + 1);

您可能会发现您的终止条件需要修改为:

if (num > 2)

终止条件通常是“什么都不做”的情况,这里就是这种情况。


推荐阅读