Rekursion

hooked

Mitglied
Hey Leute,
habe hier folgende Aufgabe zum Thema Rekursion zu lösen, weiß aber nicht genau wie ich die Aufgabe lösen, geschweige denn Anfangen soll.
Ich hoffe ihr könnt mir Helfen.
Hier die Aufgabe:

Betrachten Sie das hier angegebene Java-Programm. Es verwendet eine while-Schleife, um das Muster *--*--*--* auf dem Bildschirm auszugeben.

int i=0;
while (i<10) {
if (i % 3 == 0)
System.out.print("*");
else
System.out.print("-");
i = i+1; }

Schreiben Sie das Programm so um, dass es keine Schleife, sondern stattdessen Rekursion verwendet. Ansonsten sollen die Funktionsweise und die Struktur des Programms gleich bleiben. Implementieren Sie hierzu eine rekursive Methode void print(int i). Ein Aufruf von print(0) soll das gewünschte Muster ausgeben.

Es gibt noch eine Unteraufgabe die wie folgt lautet:

Implementieren Sie eine Methode double arrayProd(double[] array, int start). Sie soll das Produkt der Zahlen im Array ab dem Index start mit Hilfe von Rekursion berechnen und zurückgeben. Ein Aufruf mit 0 als zweitem Parameter berechnet also das Produkt aller enthaltenen Zahlen.

Auch hierfür brauch ich Hilfe.

Ich danke schonmal im voraus :)
 

stg

Top Contributor
Und was hast du bisher versucht? Wo genau kommst du nicht weiter?

Hilfe kannst du gerne bekommen, aber du musst schon selbst mitmachen.
 

Flown

Administrator
Mitarbeiter
Ich hab mal ein Tutorial über Rekursion geschrieben vielleicht hilft dir das dein iterativen Prozess rekursiv umzumodellieren: HIER.
 

hooked

Mitglied
Ja das hat auf jeden Fall geholfen.
Aber dennoch komme ich nicht weiter.
Hier mein aktueller Code:
Code:
    void print(int i) {
        if (i < 10)
        {
            if (i % 3 == 0)
                System.out.print("*");
            else
                System.out.print("-");
            i=print(i-1);
        }

    }

bei i=print(i-1) zeigt mir Eclipse einen Fehler, aber ich verstehe nicht wieso.
Denn an dieser Stelle will ich ja, dass i um print(i-1) runtergesetzt wird und die Methode dann nochmal mit dem neuen Wert durchläuft.
 

hooked

Mitglied
aber wir sollen ja die Methode "void print(...)" implementieren. Das heißt ich darf das void nicht verändern...wie soll ich das dann sonst machen, dass ich die Methode in der Methode nochmal aufrufe ?
 

hooked

Mitglied
Sehr cool...hat geklappt, aber ich musste aus dem i-1 ein i+1 machen, da es sonst unendlich lange lief.
Dankeschön :)
Habe aber immer noch Probleme mit dem Aufgabenteil b)
Da bin ich Momentan so Weit:
Code:
    double arrayProd(double[] array, int start)
    {
        if (start <= array.length)
        {
            double produkt = arrayProd(array, start)*arrayProd(array, start+1);
            return produkt;
        }
        return start;
       
    }

Leider liefert er mir da nicht das gewünscht Ergebnis. Mein Problem ist auch, dass Arrays so gar nicht mein Thema sind -.-
 

Neue Themen


Oben