1. #1

    Registriert seit
    19.11.2011
    Beiträge
    2.128
    Thanked 1.936 Times in 1.180 Posts

    Standard Rekursionsfunktion

    Hallo.

    Wir haben im Informatikunterricht Aufgaben bekommen und zwar diese:


    Klicke auf die Grafik für eine größere Ansicht 

Name:	Unbenannt.jpg 
Hits:	280 
Größe:	183,5 KB 
ID:	7471

    Die jeweils erste Reihe ist der Index, dadrunter befindet sich das Ergebnis einer Rechnung.

    Schaut man bei Aufgabe 1) beispielsweise auf Index 4, so sieht man, dass als Resultat 15 herauskommen muss.

    Das ist natürlich mehr als simpel.


    Jetzt habe ich das versucht in Java umzusetzen, aber irgendwie klappt etwas mit der Rekursion nicht.


    Code:


    public int afunc(int n) {return afunc(n -1) * 2 + 1;}
    public int bfunc(int n) {return bfunc(n -1) + 3;}
    public int cfunc(int n) {return cfunc(n-1) * n;}

    public void doindexberechnung()
    {
    jTextArea1.setText(String.valueOf(afunc(4)));
    }



    Fehler:
    Exception in thread "AWT-EventQueue-0" java.lang.StackOverflowError


    Kann mir jemand sagen, was da schief läuft?

  2. #2

    Registriert seit
    09.11.2011
    Beiträge
    121
    Thanked 129 Times in 46 Posts

    Standard AW: Rekursionsfunktion

    Wo ist deine Abbruchbedingung in der Rekursion?

    MfG

  3. #3

    Registriert seit
    19.11.2011
    Beiträge
    2.128
    Thanked 1.936 Times in 1.180 Posts

    Standard AW: Rekursionsfunktion

    Ah stimmt, danke.

    Wie soll ich die Abbruchbedingung machen in diesem Fall?
    Hatte irgendwas gedacht wie : if (n > 0) return afunc(n-1) * 2 + ;

    Bzw. if(n <=0 ) return;

    Aber das funktioniert alles nicht.

    Wie macht man das in Java?
    Geändert von !lkay (08.04.2014 um 10:24 Uhr)

  4. #4
    Avatar von Nuebel
    Registriert seit
    23.11.2013
    Beiträge
    446
    Thanked 361 Times in 236 Posts

    Standard AW: Rekursionsfunktion

    Da du in deinen Rekursionen den Input immer verringerst, wäre es ratsam die Abbruchbedingung so zu wählen, dass sie den kleinstmöglichen Input behandelt. Zum Beispiel: wenn n = 1, gib 1 zurück.

  5. The Following User Says Thank You to Nuebel For This Useful Post:


Diese Seite nutzt Cookies, um das Nutzererlebnis zu verbessern. Klicken Sie hier, um das Cookie-Tracking zu deaktivieren.