Java Rekursion: Beispiel

Ich bin mir bewusst, wie Rekursion funktioniert, ich.e:

method calls itself until it reaches a base case then it can start solving its problem.

In diesem code-Beispiel wird eine Methode oder entfernen von Blumen aus einer vase.

Ich habe eine trace-Anweisung, um in der Lage sein zu sehen, wie viele Blumen sind in der vase nach jedem Aufruf. Jedoch ist die output-Blätter, 7 Blüten in der vase. Ich bin verwirrt, warum?

Code:

public static void emptyVase( int flowersInVase ) {
    if( flowersInVase > 0 ) {
    //take one flower and
        emptyVase( flowersInVase - 1 ) ;

        System.out.println(flowersInVase);


    } else {
           //the vase is empty, nothing to do

    }
}

Aufrufen der Methode:

public class RecursionPractice {

    public static void main(String[] args) {

        emptyVase(7);    
    }

Ausgabe:

1
2
3
4
5
6
7
  • Java übergibt Argumente Call-by-Value.
  • was meinst du?
  • Sie müssen übergeben Sie die variable flowersInVase durch Verweis auf die änderungen
  • In einfachen Worten: niemand wird je sehen, was emptyVase() hat zu flowersInVase.
  • Danke, bitte Lesen Sie meine Frage bearbeitet
  • Sind Sie jetzt unter Bezugnahme auf die Reihenfolge der Drucke? Wenn dies ist ein Anliegen swap-System.aus.println() und emptyVase() Zeile.
  • Ich bin im Grunde Fragen, warum die vase nicht leer ist, am Ende des Gesprächs?

InformationsquelleAutor | 2014-05-29
Schreibe einen Kommentar