# rekursive Methode



## babuschka (18. Jan 2012)

Das n-te Element der Pibonacci-Folge kann durch die Funktion pib(n) so dargestellt werden:

pib(n):=1 falls 0<n<= 3
pib(n):= pib(n-1)+2-pib(n-3), falls 3<n


Also die Folge sieht so aus:

1,1,1,2,3,4,4,3,1,-1,-2,...


Aufgabe ist es eine rekursive Funktion pib(int n) zu implementieren, die das n-te Element der Folge berechnet.

(Für n<= 0 ist die Funktion nicht definiert; wir sollen dann den Wert 0 zurückgeben und eine entsprechende Fehlermeldung ausgeben.)


------

Ich habe das gemacht und wüsste gerne, ob meine Methode bzw. Klasse so gut ist. Kommt mir irgendwie zu einfach vor!


```
public class PibonacciRecursive{
public int pib(int n){
  if( n<=0){
     System.out.println("Function is not defined for n<=0.");
     return 0;
  }
  
  if( 0<n && n<= 3) return 1;

  return pib(n-1)+2-pib(n-3);
  }
}
```


----------



## SlaterB (18. Jan 2012)

> if( 0<n && n<= 3) return 1;
die erste Bedingung kannst du dir sogar noch sparen, ist durch die allereste Abfrage sowieso sichergestellt,

so einfach ist es, korrekt


----------



## HimBromBeere (18. Jan 2012)

Wie würdest du die Aufgabe denn auf dem Papier lösen? Wie lautet deine Rekursionsformel (sowas wie 
	
	
	
	





```
f(n + 1) = g(n)
```
, in anderen Worten: wie würdest du den Nachfolger zu einer Fibo-Zahl bestimmen?

EDIT: Läuft dein Code und spuckt er aus, was er soll? Dann ist er auch gut


----------



## babuschka (18. Jan 2012)

Danke für den Hinweis.

Ich freu' mich, daß ich (fast) richtig lag.

:applaus:


----------



## babuschka (18. Jan 2012)

HimBromBeere hat gesagt.:


> Wie würdest du die Aufgabe denn auf dem Papier lösen? Wie lautet deine Rekursionsformel (sowas wie
> 
> 
> 
> ...





Zu Deinem Beitrag:

Erstmal sollen es nicht die Fibonacci-Zahlen sein, sondern die Pibonacci-Zahlen.

Und dann würde ich das so machen:

pib(n+1)=pib(n)+2-pib(n-2)


Wäre das korrekt?


----------



## babuschka (18. Jan 2012)

Ist es denn nicht aber egal, ob man meine Variante oder die mit 

pib(n+1) nimmt?


----------



## SlaterB (18. Jan 2012)

ja


----------

