2017-01-08 133 views
-4

我需要在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); 
    } 
} 
+0

那么,是什么问题? –

+3

你应该'stej(max-1,min);'使你的代码编译。 – Maroun

+0

线程“main”中的异常java.lang.Error:未解决的编译问题: \t ***类型中的stej(int,int)不适用于参数(int) –

回答

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

0

你的方法有两个参数(max和min),但你只用一个参数调用。

static void stej(int max, int min) { 
    if(max==min) 
     System.out.print(min); 
    else { 
     System.out.print(max + " "); 
     stej(max-1, min); 
    } 
} 
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); 
     } 
    } 
}