Erste Schritte Rekursionen Aufrufe ausgeben

Wes11

Mitglied
Hallo, wie kann ich in Java die ganzen Aufrufe/Parameter einer Rekursion ausgeben? Also ich möchte gerne die komplette Reihenfolge und Parameter ausgeben
Ich weiß, das mir der Wert direkt ausgegeben wird, wenn ich f(4) z.B. eingebe, möchte aber gerne die Reihenfolge und die Parameter ausgegeben haben, sprich die Reihenfolge der Aufrufe
Und wie gebe ich die Rekursionstiefe aus?

Der code:

Java:
public static void main(String[] args) {
System.out.println(f(6));
}
static int f(int x) {

if (x < 3)
return x+2;
else
  return 2 * f(x-1) + f(x-3);
}
 
Zuletzt bearbeitet:

White_Fox

Top Contributor
Ich kann in deinem Beispiel keinerlei Rekursion entdecken. Wo ist da ein rekursiver Aufruf?

Edit:
Rekursion wurde hier:
recht anschaulich besprochen, ab #25.
 

Wes11

Mitglied
Ich kann in deinem Beispiel keinerlei Rekursion entdecken. Wo ist da ein rekursiver Aufruf?

Edit:
Rekursion wurde hier:
recht anschaulich besprochen, ab #25.
oh sorry, falscher code
hab es bearbeitet und hab jetzt den richtigen drinne, der eine rekursive methode sein sollte
 
Zuletzt bearbeitet:

Meniskusschaden

Top Contributor
Hallo, wie kann ich in Java die ganzen Aufrufe/Parameter einer Rekursion ausgeben? Also ich möchte gerne die komplette Reihenfolge und Parameter ausgeben
Ich weiß, das mir der Wert direkt ausgegeben wird, wenn ich f(4) z.B. eingebe, möchte aber gerne die Reihenfolge und die Parameter ausgegeben haben, sprich die Reihenfolge der Aufrufe
Du kannst Ausgabeanweisungen in der ersten Zeile der Methode und vor jedem return einbauen.

Und wie gebe ich die Rekursionstiefe aus?
Die Rekursionsebene müsstest du dann als zusätzliches Argument durchreichen.

Dadurch bläht sich dein Code natürlich auf. Das Ergebnis könnte dann so aussehen:
Bildschirmfoto vom 2020-03-01 20-51-01.png
 

Meniskusschaden

Top Contributor
Wie würde das den als Code aussehen?
Java:
public class RecursionDemo {
    private static final String HORIZONTALEDGE = "\u2500";
    private static final String VERTICALEDGE = "\u2502";
    private static final String TOPLEFTCORNER = "\u250c";
    private static final String BOTTOMLEFTCORNER = "\u2514";
    

    public static void main(String[] args) {
        System.out.println(f(0, 6));
    }

    static int f(int level, int x) {
        methodStarted(level, x);
        if (x < 3) {
            return methodLeaving(level, x+2);
        } else {
            return methodLeaving(level, 2 * f(level+1, x-1) + f(level+1, x-3));
        }
    }
    
    private static void methodStarted(int level, int x) {
        print(level, TOPLEFTCORNER+HORIZONTALEDGE+"f(" + x + ")");
    }
    
    private static int methodLeaving(int level, int result) {
        print(level, BOTTOMLEFTCORNER+HORIZONTALEDGE+"return " + result);
        return result;
    }
    
    private static void print(int level, String text) {
        for (int i = 0; i < level; i++) {
            System.out.print(VERTICALEDGE+" ");
        }
        System.out.println(text);
    }   

}
 

Meniskusschaden

Top Contributor
Eigentlich kann man sich das Durchreichen der Rekursionsebene hier auch mit einer globalen Variablen sparen:
Java:
public class RecursionDemo {
    private static final String HORIZONTALEDGE = "\u2500";
    private static final String VERTICALEDGE = "\u2502";
    private static final String TOPLEFTCORNER = "\u250c";
    private static final String BOTTOMLEFTCORNER = "\u2514";
    
    private static int level;

    public static void main(String[] args) {
        System.out.println(f(6));
    }

    static int f(int x) {
        methodStarted(x);
        if (x < 3) {
            return methodLeaving(x+2);
        } else {
            return methodLeaving(2 * f(x-1) + f(x-3));
        }
    }
    
    private static void methodStarted(int x) {
        print(level++, TOPLEFTCORNER+HORIZONTALEDGE+"f(" + x + ")");
    }
    
    private static int methodLeaving(int result) {
        print(--level, BOTTOMLEFTCORNER+HORIZONTALEDGE+"return " + result);
        return result;
    }
    
    private static void print(int level, String text) {
        for (int i = 0; i < level; i++) {
            System.out.print(VERTICALEDGE+" ");
        }
        System.out.println(text);
    }   

}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Rekursionen Problem Java Basics - Anfänger-Themen 2
R Rekursionen und Funktionen ... Java Basics - Anfänger-Themen 8
S Wie performance lastig sind rekursionen Java Basics - Anfänger-Themen 13
D Problem mit Rekursionen Java Basics - Anfänger-Themen 6
F Rekursionen Java Basics - Anfänger-Themen 2
missy72 Methoden Alle rekusiven Aufrufe abbrechen Java Basics - Anfänger-Themen 21
U Methode wird genutzt, ohne dass ich die aufrufe? Java Basics - Anfänger-Themen 4
Kirby.exe Methoden Aufrufe Java Basics - Anfänger-Themen 4
L Anzahl der Aufrufe von Schleifen bestimmen Java Basics - Anfänger-Themen 1
O URL Aufrufe im Browser - automatischer Seitenwechsel Java Basics - Anfänger-Themen 4
D LinkedList aufrufe Java Basics - Anfänger-Themen 3
N OOP Frage Init-Konstruktor-Aufrufe Java Basics - Anfänger-Themen 11
S Array of objects und ständige Constructor-Aufrufe Java Basics - Anfänger-Themen 4
H Zeitgesteuerte Aufrufe Java Basics - Anfänger-Themen 2
A Methoden-Aufrufe Java Basics - Anfänger-Themen 2
F Rekursive Aufrufe, Parameterübergabe, call by reference Java Basics - Anfänger-Themen 3
P Void-Aufrufe verursachen IO-Exceptions? Java Basics - Anfänger-Themen 4
I Methoden aufrufe in die Tiefe Java Basics - Anfänger-Themen 5
A Beschränkung der Anzahl der rekursiven Aufrufe einer Methode Java Basics - Anfänger-Themen 4
richis-fragen JTable den angezeigten WERT nicht den Wert aus dem Model ausgeben. Java Basics - Anfänger-Themen 3
richis-fragen JTable effektiv angezeigter Text ausgeben nicht Inhalt vom Model Java Basics - Anfänger-Themen 9
ixChronos Letzten 4 Ziffern einer großen Zahl ausgeben Java Basics - Anfänger-Themen 3
Glühlampe Usereingabe in der gleichen Zeile ausgeben Java Basics - Anfänger-Themen 6
Ü Java Array - Buchstaben als Zahlen ausgeben Java Basics - Anfänger-Themen 22
H Minimum und Maximum ausgeben lassen Java Basics - Anfänger-Themen 7
E Array, nächste Zahl zur 5 ausgeben, wie? Java Basics - Anfänger-Themen 42
J Beim Start des Programms zB. eine Linie in JPanel ausgeben Java Basics - Anfänger-Themen 4
R Images aus einem Array ausgeben Java Basics - Anfänger-Themen 3
S leeres Array statt Null Pointer Exception ausgeben Java Basics - Anfänger-Themen 20
S Inhalte aus Array vergleichen und Max ausgeben Java Basics - Anfänger-Themen 3
javaBoon86 Arrays 2 Dimension Werte ausgeben Java Basics - Anfänger-Themen 15
S Ausgeben wie oft ein Wert in einem Array vorkommt Java Basics - Anfänger-Themen 7
S Vollmond berechnen und ausgeben Java Basics - Anfänger-Themen 12
S Vollkommene Zahl berechnen und ausgeben Java Basics - Anfänger-Themen 16
K wie kann ich alle Attribute von dem Objekt(pagode) ausgeben lassen ? Java Basics - Anfänger-Themen 3
I Wortkette in umgekehrter Rheinfolge + in neuer Zeile ausgeben Java Basics - Anfänger-Themen 4
jeff98 Wie kann man in Java eine Zeichenformation ausgeben? Java Basics - Anfänger-Themen 9
S Größte Zahl nach Eingabe der Zahl 0 ausgeben Java Basics - Anfänger-Themen 6
Tommilee Char ausgeben Java Basics - Anfänger-Themen 5
K Geldbetrag in Euro + Cents ausgeben Java Basics - Anfänger-Themen 24
M geschachtelte for-Schleifen - Einmaleins ausgeben Java Basics - Anfänger-Themen 3
TheSepp Nur Arrays ausgeben, die Werte zugewiesen haben. Java Basics - Anfänger-Themen 4
julian0507 Wörter einlesen lassen und rückwärts ausgeben Java Basics - Anfänger-Themen 7
I ResultSet aus meiner SQL-Abfrage in einem JTextfield ausgeben. Java Basics - Anfänger-Themen 1
M Werte in Felder speichern und geordnet ausgeben Java Basics - Anfänger-Themen 8
JavaBeginner22 Wort mit der größten Länge ausgeben Java Basics - Anfänger-Themen 4
frager2345 Aufgabe Hash Objekt Elemente ausgeben Java Basics - Anfänger-Themen 2
LilliCherry Array in einer Zeile ausgeben Java Basics - Anfänger-Themen 6
D Grafik auf ein JPane ausgeben. Java Basics - Anfänger-Themen 6
berserkerdq2 Methodenaufrufstapel ausgeben, was ist das? Java Basics - Anfänger-Themen 2
rosima26 Geordnete Arrays ausgeben Java Basics - Anfänger-Themen 31
D Inhalt eines Arrays ausgeben Java Basics - Anfänger-Themen 7
C Zwei Arrays addieren und ausgeben Java Basics - Anfänger-Themen 3
LFB In einer For-Schleife alles in einer Zeile ausgeben Java Basics - Anfänger-Themen 14
Robin Gentele XML von Webserver lesen und ausgeben Java Basics - Anfänger-Themen 5
W Array ausgeben Java Basics - Anfänger-Themen 29
I 2D-Array Position der Liste ausgeben. Java Basics - Anfänger-Themen 2
S Schachbrettmuster ausgeben Java Basics - Anfänger-Themen 3
J Zahlen bis zu einem bestimmten Grenzwert ausgeben Java Basics - Anfänger-Themen 11
Fats Waller Compiler-Fehler Kann ich einen String und die Summe zweier Char Werte mittels der println Anweisung ausgeben Java Basics - Anfänger-Themen 4
M Array rückwärts ausgeben Java Basics - Anfänger-Themen 2
HelpInneed Baum ausgeben (aber mal anders) Java Basics - Anfänger-Themen 3
HeiTim Brauche Hilfe soll ein nummeriertes Feld ausgeben lassen Java Basics - Anfänger-Themen 17
P Datei einlesen, nach Begriff filtern und in Datei ausgeben. Problem Standardausgabe über Konsole Java Basics - Anfänger-Themen 19
xFlozen Text mehrspaltig ausgeben Java Basics - Anfänger-Themen 3
Kotelettklopfer Stringbuilder mit print ausgeben Java Basics - Anfänger-Themen 83
L Methoden Rückgabewert Verbergen / nicht mit ausgeben Java Basics - Anfänger-Themen 4
S Array über ein Ausgabemethode in main ausgeben Java Basics - Anfänger-Themen 31
S Primzahlen in Array ausgeben Java Basics - Anfänger-Themen 14
O Anzahl Datensätze ausgeben Java Basics - Anfänger-Themen 5
W n verschiedene Arrays zufällig ausgeben - mit der Random-Klasse? Java Basics - Anfänger-Themen 8
C Matrix mit Array ausgeben Java Basics - Anfänger-Themen 6
Poppigescorn Mithilfe einer Arrayliste einen Notenspiegel ausgeben Java Basics - Anfänger-Themen 12
C Methode Grouping mit Werten ausgeben Java Basics - Anfänger-Themen 2
A Array einlesen und ausgeben Java Basics - Anfänger-Themen 13
K Datum einlesen und Tag, Monat und Jahr einzeln ausgeben Java Basics - Anfänger-Themen 1
K Datum einlesen und Tag, Monat und Jahr einzeln ausgeben Java Basics - Anfänger-Themen 1
ansystin Teilerfremde Zahlen ausgeben + Zahlenausgabe speichern Java Basics - Anfänger-Themen 3
J Koordinaten per Schleife ausgeben Java Basics - Anfänger-Themen 6
S Wort einlesen Array ausgeben Java Basics - Anfänger-Themen 4
H Eingegebene Zahlen mit Array ausgeben Java Basics - Anfänger-Themen 18
S Arraylist<Object> mit verschiedenen Objects ausgeben Java Basics - Anfänger-Themen 3
L Längstes Element einer ArrayList ausgeben Java Basics - Anfänger-Themen 9
I 12 Spalten von jeweils 30 Zahlen in Konsole ausgeben Java Basics - Anfänger-Themen 6
elsaaaaaa Wochentag als String ausgeben mit JDK Klassen Java Basics - Anfänger-Themen 6
M ArrayList in GUI ausgeben Java Basics - Anfänger-Themen 1
C Erste Schritte Muster ausgeben in der Konsole - großes V Java Basics - Anfänger-Themen 5
J Nur bestimmter Typ aus der ArrayList ausgeben. Java Basics - Anfänger-Themen 9
I Java-Wort einlesen und ausgeben Java Basics - Anfänger-Themen 7
KogoroMori21 Methode in der main ausgeben Java Basics - Anfänger-Themen 2
M Wie kann ich hier den Abstand ausgeben? Java Basics - Anfänger-Themen 3
W Anzahl der Zeilen ausgeben lassen Java Basics - Anfänger-Themen 20
U Teilergebniss mit 0 nicht ausgeben Java Basics - Anfänger-Themen 3
S Tastatureingabe auslesen und in Konsole ausgeben Java Basics - Anfänger-Themen 6
T Bestimmte Zahlen ausgeben mit einer whilfe Schleife Java Basics - Anfänger-Themen 21
M In gleicher zeile hinter ausgabe noch etwas ausgeben Java Basics - Anfänger-Themen 1
JD_1998 Array-Position aus einer Methode in einer anderen ausgeben (Kurze Frage) Java Basics - Anfänger-Themen 2
M Objekte in Array speichern und ausgeben Java Basics - Anfänger-Themen 17
JD_1998 Arrays einlesen, zwischenspeichern und wieder ausgeben Java Basics - Anfänger-Themen 8
H Alle Geraden zahlen bis 10 ausgeben Java Basics - Anfänger-Themen 11

Ähnliche Java Themen

Neue Themen


Oben