Rekursiver Aufruf

HaliGali9761

Mitglied
Hallo alle zusammen, ich habe folgende Rekursion:

Code:
public class RekursiverAufruf {

    public static String exB(int n) {
        if (n <= 0)
            return "";
        return exB(n - 2) + (n + 1) + exB(n - 1);

    }

    public static void main(String[] args) {

        System.out.print(exB(4));
    }
}
ich soll die Ausgabe mit dem Aufruf 4 erklären und meine Übungsergebnisse stimmen leider nicht mit dem richtigem Ergebnis(3252432) überein. Daher wollte ich fragen ob mir jemand eine Hilfestellung geben könnte wie ich diesen Aufruf richtig abarbeite.
Ich komme einfach nicht auf die Idee wie ich richtig an diese Aufgabe herangehe, hab mich konzentriert hingesetzt und bin leider nicht auf den richtigen Lösungsweg gestoßen.

Wäre sehr dankbar für kleine Unterstützungen.
 

MoxxiManagarm

Top Contributor
exB(4)
= exB(2) + 5 + exB(3)
Das wäre der erste Ersetzungsschritt und hier ist eine Stolperfalle. 5 ist zwar int, aber der return-Wert von exB ist nicht int, sondern String. Damit werden die einzelnen Ergebnisse zusammengefügt und nicht mehr addiert. Weitere Ersetzungen:
= exB(0) + 3 + exp(1) + 5 + exB(1) + 4 + exB(2)
= "" + 3 + exB(-1) + 2 + exB(0) + 5 + exB(-1) + 2 + exB(0) + 4 + exB(0) + 3 + exB(1)
= "3" + "" + 2 + "" + 5 + "" + 2 + "" + 4 + "" + 3 + exB(-1) + 2 + exB(0)
= "325243" + "" + 2 + ""
= "3252432" (String, nicht int)
 

HaliGali9761

Mitglied
= exB(0) + 3 + exp(1) + 5 + exB(1) + 4 + exB(2)

Fangen wir bei dieser Zeile an: exB(0, weil 2-2?) +(3, weil 2+1?)+exB(1,weil 2-1?). Ist das richtig so? Wieso folgt denn nach der exB(1) eine 5 ? Nach der 5 folgen ja exB(1, weil 3-2?)+(4, weil 3+1?)+exB(2, weil 3-1?)
.
Nach welcher Reihenfolge werden die Zahlen denn ersetzt ?
Könntest du mir bitte erklären erklären wie genau diese 1. Ersetzung zu Stande kommt?
 

temi

Top Contributor
So geht es los:
exB(4)
= exB(2) + 5 + exB(3)
Das exB(2) wird dann durch
exB(0) + 3 + exp(1)
ersetzt (die Begründung dafür hast du richtig erkannt). Die "5" stammt also noch vom ersten Aufruf.

Ersetzen ist hier wörtlich zu nehmen. Du ersetzt jeden exB(x) Aufruf durch die daraus resultierenden Aufrufe und die "5" bleibt einfach so stehen wie sie ist.

Edits: Ein paar Erklärungen ergänzt.
 
Zuletzt bearbeitet:

MoxxiManagarm

Top Contributor
Bei exB(4) kommt return exB(n - 2) + (n + 1) + exB(n - 1), das ist exB(2) + 5 + exB(3).
Dabei wird im Programm exB(2) erst vollständig durchlaufen. Was wiederum exB(0) + 3 + exB(1) ist. Du kannst dir exB(2) gedanklich daher mit diesem Term ersetzen. Die 5 verbleibt durch die erste Ersetzung, die Reihenfolge bleibt gleich. Lass mich obiges noch einmal mit Formattierung aufführen.

exB(4)
= exB(2) + 5 + exB(3)
=
exB(0) + 3 + exp(1) + 5 + exB(1) + 4 + exB(2)
= "" + 3 + exB(-1) + 2 + exB(0) + 5 + exB(-1) + 2 + exB(0) + 4 + exB(0) + 3 + exB(1)
= "3" + "" + 2 + "" + 5 + "" + 2 + "" + 4 + "" + 3 + exB(-1) + 2 + exB(0)
= "325243" + "" + 2 + ""
= "3252432"
 

HaliGali9761

Mitglied
Danke für die Bemühungen aber ich verstehe echt nicht die Struktur dieser Abarbeitungen. Ich weiß nicht wann ich erkenne wenn ein exB() komplett durchlaufen ist.
exB(2) + 5 + exB(3)
Dieser Teil ist mir völlig klar.

exB(0) + 3 + exp(1) + 5 + exB(1) + 4 + exB(2)
exB (2-2= 0) + 5-2=3 +exB (2-1=1) +5 (von oben)+ exB(3-2= 1)+ 3+1=4 +exB (3-1=2) .
So erkläre ich mir diese Zeile

"" + 3 + exB(-1) + 2 + exB(0) + 5 + exB(-1) + 2 + exB(0) + 4 + exB(0) + 3 + exB(1)
Fange ich in dieser Zeile an mit der 1 zu ersetzen?
Das "" und +3+ stammt aus dem letzten Aufruf? Danach fange ich an mit der 1 zu ersetzen?
exB(1-2=-1)+ 1+1=2 +exB(1-1=0)+5+ ......
Wieso wird nach der 5 wieder mit 1 ersetzt? Ich verstehe nicht nach welchen Regeln hier dauerhaft ersetzt wird, in der Zeile davor wurde ja meines Erachtens nach logisch mit exB(2) und dann mit exB(3) ersetzt, hier verstehe ich die Struktur einfach nicht mehr :eek:
 

Meniskusschaden

Top Contributor
Vielleicht musst du es nur noch ausführlicher aufschreiben und nicht so viele Aufrufe gleichzeitig auflösen:
Code:
  exB(4)
= exB(2)                   + 5 + exB(3)
= exB(0) + 3 + exB(1)      + 5 + exB(3)
= ""     + 3 + exB(1)      + 5 + exB(3)
= 3 + exB(1)               + 5 + exB(3)
= 3 + exB(-1) + 2 + exB(0) + 5 + exB(3)
= 3 + ""      + 2 + ""     + 5 + exB(3)
= 32                       + 5 + exB(3)
= 325 + exB(3)
= 325 + exB(1)               + 4 + exB(2)
= 325 + exB(-1) + 2 + exB(0) + 4 + exB(2)
= 325 + ""      + 2 + ""     + 4 + exB(2)
= 32524 + exB(2)
= 32524 + exB(0) + 3 + exB(1)
= 32524 + ""     + 3 + exB(-1) + 2 + exB(0)
= 32524          + 3 + ""      + 2 + ""
= 3252432
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
G Rekursiver Aufruf einer JSP über eine JavaScript-Funktion Java Basics - Anfänger-Themen 5
E Hilfe bei rekursiver Funktion Java Basics - Anfänger-Themen 3
G Variable aktualisiert sich nicht in rekursiver Methode Java Basics - Anfänger-Themen 4
J Rekursiver Algorithmus Java Basics - Anfänger-Themen 9
K Rekursiver Vergleich von Textmuster und Text Java Basics - Anfänger-Themen 2
M Probleme bei rekursiver Zuordnung Java Basics - Anfänger-Themen 1
S Rekursiver InsertionSort ohne Schleife Java Basics - Anfänger-Themen 7
K Methoden Fibonacci in Array mit rekursiver Methoden Java Basics - Anfänger-Themen 19
4 Stack over flow bei rekursiver Tiefensuche Java Basics - Anfänger-Themen 5
T Rekursiver Methodenaufruf funktioniert nicht Java Basics - Anfänger-Themen 7
O Rekursiver Durchlauf verschachtelter Elemente Java Basics - Anfänger-Themen 1
B Quadratwurzel nach Heron in rekursiver Darstellung Java Basics - Anfänger-Themen 1
A Heap Space Error bei rekursiver Suche in Dateien trotz nur einer Zeile im Speicher Java Basics - Anfänger-Themen 26
W sysout in rekursiver methode Java Basics - Anfänger-Themen 4
A Rekursiver Pseudocode Java Basics - Anfänger-Themen 4
E Problem bei rekursiver Berechnung des Binomialkoeffizienten Java Basics - Anfänger-Themen 5
S Probleme bei Ausgabe von rekursiver Methode (List) Java Basics - Anfänger-Themen 16
J Rekursiver Horner-Schema-Algorithmus - Verstehe ich ihn richtig? Java Basics - Anfänger-Themen 2
D Binäre Suche für Integerarray in rekursiver Funktion Java Basics - Anfänger-Themen 5
O Faktorielle mit rekursiver Methode berechnen Java Basics - Anfänger-Themen 6
S Laufzeit bei rekursiver Methode messen Java Basics - Anfänger-Themen 6
N Unerklärlich: Rekursiver Algorithmus gibt falschen Datentyp zurück... Java Basics - Anfänger-Themen 4
J rekursiver Methodenaufruf Java Basics - Anfänger-Themen 12
D Datentypen Rekursiver Datentyp Java Basics - Anfänger-Themen 8
S Werte von rekursiver Methode Java Basics - Anfänger-Themen 5
Q rekursiver algo. Java Basics - Anfänger-Themen 16
M Potenz mithilfe rekursiver Funktion Java Basics - Anfänger-Themen 13
F Rekursiver Algorithmus Java Basics - Anfänger-Themen 5
C Frage zu negativen und positiven Exponenten in rekursiver Methode Java Basics - Anfänger-Themen 11
G PRoblem mit rekursiver float additions methode Java Basics - Anfänger-Themen 9
B rekursiver Funktionsaufruf Java Basics - Anfänger-Themen 2
E fehlermeldung bei rekursiver grafik Java Basics - Anfänger-Themen 11
F Problem bei rekursiver Binärsuche Java Basics - Anfänger-Themen 2
T Rekursiver Algorithmus: Türme von Hanoi Java Basics - Anfänger-Themen 8
T Aufruf der Methode einer Oberklasse, wenn sie in der Unterklasse überschrieben ist. Polymorphie. Java Basics - Anfänger-Themen 2
M Konstruktor-Aufruf im Konstruktor, aber nicht am Anfang? Java Basics - Anfänger-Themen 4
P Array-Objekte-Aufruf Java Basics - Anfänger-Themen 22
Agent4nobody Programmstart durch aufruf des interpreters funktioniert nicht Java Basics - Anfänger-Themen 14
G Main Methode wird beim ersten Aufruf nicht richtig ausgeführt Java Basics - Anfänger-Themen 1
K Erste Schritte Stream-Aufruf vereinfachen Java Basics - Anfänger-Themen 3
sashady ursprüngliche Array-Werte bei erneutem Aufruf? Java Basics - Anfänger-Themen 7
M Aufruf von statischen Methoden einer anderen Klasse Java Basics - Anfänger-Themen 15
Y Aufruf von Methode nicht möglich. Java Basics - Anfänger-Themen 2
D Aufruf von mehreren Activities bringt die app zum Absturz Java Basics - Anfänger-Themen 5
L Methoden Wie Löse ich ext Methoden Aufruf Fehler? Java Basics - Anfänger-Themen 3
X Methode bei mehrfachen Aufruf kein Effekt Java Basics - Anfänger-Themen 3
H Aufruf von Methoden durch Methoden Java Basics - Anfänger-Themen 3
B EJB und Arquillian - bekomme Nullpointer Exception beim Aufruf der EJB Klasse Java Basics - Anfänger-Themen 40
O Verwirrt beim Java Collection Framework aufruf! Java Basics - Anfänger-Themen 9
T Konsolenscanner startet nicht durch Aufruf von Actionlistener Java Basics - Anfänger-Themen 4
B OOP While Schleife läuft Endlos durch externen aufruf Java Basics - Anfänger-Themen 2
E Vererbung super-Methoden Aufruf Java Basics - Anfänger-Themen 3
D Interface Wieso Aufruf aller Methoden eines Interfaces? Java Basics - Anfänger-Themen 11
R Methoden NPE beim Aufruf einer Methode einer anderen Klasse Java Basics - Anfänger-Themen 4
J Aufruf einer Methode über einen String Java Basics - Anfänger-Themen 11
A Aufruf von Konstruktor , obwohl 2 Parameter weggelassen werden Java Basics - Anfänger-Themen 7
A Aufruf von Konstruktor , obwohl 2 Parameter weggelassen werden Java Basics - Anfänger-Themen 0
E Daten dem Super Aufruf übergeben Java Basics - Anfänger-Themen 3
D Interface Frame doppelt durch Aufruf der GUI Klasse Java Basics - Anfänger-Themen 1
Henri Aufruf von getX() und getY() aus der Super klasse Objekt() Java Basics - Anfänger-Themen 3
E Aufruf auf Objekt mit übergebenem Wert? Java Basics - Anfänger-Themen 7
D Aufruf einer statischen Variable Java Basics - Anfänger-Themen 1
D Aufruf einer Methode einer anderen Klasse Java Basics - Anfänger-Themen 39
T static String Variable wird nur beim ersten aufruf durch eine Funktion geändert. Java Basics - Anfänger-Themen 16
C Erste Schritte Fehler beim *.class Aufruf über cmd.exe Java Basics - Anfänger-Themen 9
M Speichern von Objekten - Verfügbarkeit bei erneutem Aufruf Java Basics - Anfänger-Themen 3
S PHP Aufruf mit mehreren Variablen Java Basics - Anfänger-Themen 2
P Aufruf Methode anderer Klasse Java Basics - Anfänger-Themen 5
J Klassen Reihenfolge beim Aufruf von Klassen Java Basics - Anfänger-Themen 1
V Problem Aufruf einer Methode in einer Methode Java Basics - Anfänger-Themen 1
O Frage zum Aufruf überladener Methoden Java Basics - Anfänger-Themen 4
G funktions Aufruf aus GUI Java Basics - Anfänger-Themen 9
A Fehlermeldung beim aufruf der main Methode Java Basics - Anfänger-Themen 17
I Rückgabe und Aufruf einer Methode innerhalb einer anderen Methode Java Basics - Anfänger-Themen 5
W Zeitversetzter Aufruf der Methoden Java Basics - Anfänger-Themen 6
M Unbekannte Nummer bei Aufruf der toString Methode Java Basics - Anfänger-Themen 3
D Methode mit mehren Rekursiven aufrufen in Methode mit einem Rekursiven Aufruf umwandeln! Java Basics - Anfänger-Themen 1
F signiertes Applet fkt. nicht bei lokalem Aufruf Java Basics - Anfänger-Themen 2
A externer repaint Aufruf Java Basics - Anfänger-Themen 9
H Aufruf einer Instanzmethode funktionert nicht. Java Basics - Anfänger-Themen 6
A Konstruktor Aufruf Java Basics - Anfänger-Themen 4
Pentalon Ein Aufruf den ich nicht verstehe Java Basics - Anfänger-Themen 11
D dynamischer Aufruf Java Basics - Anfänger-Themen 2
N Aufruf der Methode Java Basics - Anfänger-Themen 16
L Next()-Aufruf zweimal innerhalb einer While-Schleife bei ListIterator Java Basics - Anfänger-Themen 10
S Aufruf Einer Methode aus einer anderen Klasse - Static Fehler Java Basics - Anfänger-Themen 4
A Aufruf der paint() Methode Java Basics - Anfänger-Themen 3
K Problem beim Array aufruf Java Basics - Anfänger-Themen 4
P URL für Lokalen Aufruf Java Basics - Anfänger-Themen 5
C OOP Aufruf von Methoden höherer Sichtbarkeit Java Basics - Anfänger-Themen 10
T Client-Fenster bei Aufruf unvollständig Java Basics - Anfänger-Themen 12
S Überladener Konstruktor und aufruf aus eigener Klasse Java Basics - Anfänger-Themen 2
A Aufruf von Konstruktor aus Basisklasse Java Basics - Anfänger-Themen 7
O OOP super aufruf 2 objekte? Java Basics - Anfänger-Themen 3
D Array Methoden Aufruf. Java Basics - Anfänger-Themen 14
L Klassen Aufruf einer ueberschreibbaren Methode im Konstruktor Java Basics - Anfänger-Themen 4
M OOP Aufruf vieler Getter Methoden abkürzen? Java Basics - Anfänger-Themen 7
Q Aufruf einer Klasse in einem Package Java Basics - Anfänger-Themen 7
C Aufruf funktioniert nicht Java Basics - Anfänger-Themen 10
T Aufruf einer Methoden aus einer Util-Klasse mit privatem Konstruktor Java Basics - Anfänger-Themen 7

Ähnliche Java Themen

Neue Themen


Oben