Den Wert einer rekursiven Funktion bestimmen

Hans_m

Mitglied
Hay,

kann mir jemand mit dieser Aufgabe helfen ?

Wie lautet der Wert von ex234(6):

Java:
public static String ex234(int n){

if (n <= 0) return "";

return ex234(n - 3) + n + ex234( n - 2) + n;

}

Ich verstehe den Basisfall nicht. Sollte nicht einfach gar nichts ausgegeben werden wenn beim Basisfall einfach nur ein leerer String ausgegeben wird ? Wäre über Tips wie man sowas angeht sehr dankbar.
 
Naja es soll ja ein String aufgebaut werden und der Basisfall oder Rekursionsanker ändert nichts an dem String 😉 Schau dir mal den return case an 🙂 Dort werden Zahlen mit einem '+' aneinander gehangen, dies funktioniert aber nur wenn einer der Werte ein String ist. Sonst würde einfach addiert werden 🙂
 
Rechne es auf Papier doch mal selbst aus!
Fang mit n=1 an
==> return ex234(1 - 3) + 1 + ex234(1 - 2) + 1;
==> ex234(-2) + 1 + ex234(-1) + 1;
==> .....

bei n=6 ist natürlich aufwendiger!
==> return ex234(6 - 3) + 1 + ex234(6 - 2) + 1;
==> ex234(3) + 1 + ex234(4) + 1;
==> .....

Oder Du baust Dir ein kleines Progrämmel, in dem Du die Methode aufrufst.
Dabei kannst Du dann noch SysOuts einbauen, bis der Arzt kommt 😁
VG Klaus
 
Wie lautet der Wert von ex234(6):
Die Antwort darauf lässt sich übrigens ganz einfach finden, indem man den Code einfach in eine Klasse packt und dann das Ergebnis des Aufrufs ausgibt in einer main Methode.

Und dann kann man den Code natürlich auch noch beliebig erweitern ... Also um es besser verstehen zu können, könnte man da etwas mehr Ausgabe einbauen:
Java:
public static String ex234(int n){
    if (n <= 0) {
        System.out.println("ex234(" + n + ") = ''");
        return "";
    }
    
    String result = ex234(n - 3) + n + ex234( n - 2) + n;
    System.out.println("ex234(" + n + ") = '" + result + "'");
    return result;
}

Nur um mal ein kleines Beispiel zu geben. Ich kann nur empfehlen, dass man das wirklich nimmt und damit rumspielt. Das gibt dann auch noch etwas mehr Erfahrung ...
 
Die Antwort darauf lässt sich übrigens ganz einfach finden, indem man den Code einfach in eine Klasse packt und dann das Ergebnis des Aufrufs ausgibt in einer main Methode.

Und dann kann man den Code natürlich auch noch beliebig erweitern ... Also um es besser verstehen zu können, könnte man da etwas mehr Ausgabe einbauen:
Java:
public static String ex234(int n){
    if (n <= 0) {
        System.out.println("ex234(" + n + ") = ''");
        return "";
    }
   
    String result = ex234(n - 3) + n + ex234( n - 2) + n;
    System.out.println("ex234(" + n + ") = '" + result + "'");
    return result;
}

Nur um mal ein kleines Beispiel zu geben. Ich kann nur empfehlen, dass man das wirklich nimmt und damit rumspielt. Das gibt dann auch noch etwas mehr Erfahrung ...
Stimmt, so könnte ich code wie diesen in Zukunft besser nachvollziehen. Danke!
 

Neue Themen


Zurück
Oben