2017-01-08 4 views
-4

Ich muss eine Methode in Java für einen rekursiven Countdown machen, wo der Benutzer die max und min für den Countdown eingibt. Der Ausdruck sollte in main sein.Rekursive Countdown

Dies ist mein Code:

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

Was ist dann das Problem? –

+3

Sie sollten 'stej (max-1, min);', um Ihren Code kompilieren zu lassen. – Maroun

+0

Ausnahme im Thread "main" java.lang.Error: Ungelöste Kompilierungsproblem: \t Die Methode stej (int, int) im Typ *** ist nicht anwendbar für die Argumente (int) –

Antwort

1

Es ein Argument in der rekursiven Aufruf fehlt, ist:

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

Wie für den Druck in main, Sie kann das nicht tun, es sei denn, Sie bewegen der ganze Code zu main.

0

Ihre Methode hat zwei Parameter (max und min) und Sie rufen nur mit einem Argument auf.

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

Sie haben ein paar Probleme:

  • Wie commen wies darauf hin, Sie sind eine Kompilierung Fehler bekommen, weil das Argument Sie verwenden in der rekursiven Aufruf zählen sind anders als das, was in der Methodendeklaration
  • Das andere ist, dass Sie die Grenzen für das Begrenzen der Rekursion falsch überprüfen.

Die Lösung unten mit beiden Themen befassen soll:

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); 
     } 
    } 
}