2016-06-09 9 views
-2

Was ist der Unterschied zwischen den beiden folgenden Methoden:Java rekursive Methode Unterschied

public boolean recursionMethodOne(Node n) { 
    System.out.println(n.getValue()); 
    return recursionMethodOne(n.next()); 
} 

public void recursionMethodTwo(Node n) { 
    System.out.println(n.getValue()); 
    recursionMethodTwo(n.next()); 
} 

welches Sie für Rekursion verwenden und was ist der Unterschied?

Danke

+2

Keine von ihnen endet. –

+1

Erhalten wir live Fragen aus einem Test? Tut mir leid, aber der Unterschied ist ziemlich offensichtlich: Beide werden (sehr wahrscheinlich) nicht funktionieren. – pintxo

+0

Nun, die Hauptsache, die ich wissen möchte ist, wann kommst du in einer rekursiven Methode zurück und wann nennst du nur den Namen der Methode, ohne zurückzugehen? – Kingamere

Antwort

2

Beide Codes werden nicht beendet. Sie müssen eine Rückgabe für eine Testbedingung hinzufügen. Beispiel:

public void recursionMethodTwo(Node n) { 
    if (n == null) { 
     // Standard way to exit a void function without executing remaing code 
     // note that return null; doesn't compile 
     return; 
    } 
    System.out.println(n.getValue()); 
    recursionMethodTwo(n.next()); 
} 

Die Rückgabe eines Wertes hängt von der Art der Funktion ab. Zum Beispiel, wenn Sie eine Fakultät berechnen müssen Sie ein Ergebnis, wenn Sie eine Liste drucken müssen Sie nicht.

So für Ihr Beispiel scheint, dass die Methode zwei am nähesten an Ihren Bedürfnissen ist.

Andernfalls müssen Sie sich fragen, was ist der zurückkehrende boolesche Wert der Funktion? Wenn Sie eine nette Antwort auf diese Frage haben, können Sie den Code implementieren, der einen Wert zurückgibt.

+0

Wie können Sie in einer Void-Methode zurückkehren? – Kingamere

+2

@Kingamere mit 'return;'. Beachten Sie, dass es keinen Ausdruck zwischen "return" und ";" gibt. –

+2

@kingamere 'return;' ist die Standardmethode zum sofortigen Beenden einer Funktion, die 'void' zurückgibt. –

Verwandte Themen