Rekursive Methode

DrewiN_

Mitglied
Guten Tag, ich habe soweit das Programm geschrieben nur kriege ich bei der letzten Eingabe nicht das Ergebnis raus, das sollte, weiß leider auch nicht was ich falsch mache. Tipps wären hervorragend!

:


Java:
    public static int recursiveFunction(int n){
        if (n<0)
            return 0;
      
        if (n==0)
            return 1;
      
        if (n==1)
            return 4;
      
        if (n==2)
            return 10;
      
        return recursiveFunction (2*(n-1)+(n-3));
  
    }
}

Implementieren Sie eine rekursive Methode mithilfe der folgenden Formel:
x(n) = 2*x(n-1) + x(n-3) , x(0)=1 x(1)=4, x(2)=10 (Bei n<0 soll 0 zurückgegeben werden)
Lautet die Aufgabenstellung. Die Ergebnisse die raus kommen sollen, sind:
1,4,10,225,2413,6572952

Danke für Tipps und schönen Tag weiterhin :)

MfG Drewin

€dit: Ich persönlich vermute stark da fehlen 2 Befehle :D
 

Tarrew

Top Contributor
Dein letzter return Befehl ist falsch. Guck dir nochmal die Funktion an.
Deine Funktion heißt x(n).

Wenn in der Gleichung steht 2*x(n-1) dann wäre das übersetzt: 2*recursiveFunktion(n-1).

Die Ergebnisse die raus kommen sollen, sind:
1,4,10,225,2413,6572952
Für welche n-Werte denn? Also laut meiner Lösung wäre das:
x(0)=1
x(1)=4
x(2)=10
x(6)=225
x(9)=2413
x(19)=6572952

aber nur die Funktionswerte machen natürlich keinen Sinn.
 

klauskarambulut

Bekanntes Mitglied
Ist doch echt nur copy und paste.
x(n) = 2*x(n-1) + x(n-3) , x(0)=1 x(1)=4, x(2)=10

public static int x(n) {
return 2*x(n-1) + x(n-3);
}

Damit das compiliert

Java:
public static int x([B]int[/B] n) {
  return 2*x(n-1) + x(n-3);
}
Damit die Sonderfälle, die Vorgegeben sind abgefangen werden:
Java:
public static int x(int n) {
// x(0)=1 x(1)=4, x(2)=10, n<0 = 0
  if(n<0) { 
    return 0; 
  }
  switch (n) { 
    case 0: return 1;
    case 1: return 4;
    case 2: return 10;
    default: return 2*x(n-1) + x(n-3);
  }
}
Fertig!
 

Neue Themen


Oben