递归倒计时

时间:2017-01-08 15:23:24

标签: java recursion

我需要在Java中创建一个递归倒计时方法,用户输入maxmin进行倒计时。打印件应在main

这是我的代码:

static void stej(int max, int min) {
    if(max==min)
        System.out.print(min);
    else {
        System.out.print(max + " ");
        stej(max-1);
    }
}

3 个答案:

答案 0 :(得分:1)

递归调用中缺少一个参数:

static void stej(int max, int min) {
    if(max==min)
        System.out.print(min);
    else {
        System.out.print(max + " ");
        stej(max-1, min);
    }
}

至于main中的打印,除非您将所有代码移至main,否则无法执行此操作。

答案 1 :(得分:0)

你的方法有两个参数(最大值和最小值)但你只用一个参数调用。

static void stej(int max, int min) {
    if(max==min)
        System.out.print(min);
    else {
        System.out.print(max + " ");
        stej(max-1, min);
    }
}

答案 2 :(得分:0)

你有几个问题:

  • 由于评论者指出您收到编译时错误,因为您在递归调用中使用的参数计数与方法声明中的参数不同
  • 另一个是你不正确地检查限制递归的界限。

下面的解决方案应该处理这两个问题:

static void stej(int max, int min) {
    if (max < min) {        // If the arguments are reversed
        setj(min, max);     // Recursively swap them to continue
    } else {
        System.out.print(max + " ");   // Only need to print once
        if (max > min) {               // Only apply recursion if they are different
            stej(max-1, min);
        }
    }
}
相关问题