# Rekursive Methode



## DrewiN_ (18. Nov 2015)

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!

:



```
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


----------



## Tarrew (18. Nov 2015)

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 (18. Nov 2015)

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


```
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:

```
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!


----------



## DrewiN_ (18. Nov 2015)

Hast Recht habe die x Werte so gut wie nicht beachtet. Werde später den Code überarbeiten. Danke für den Tipp!


----------

