# Thema: Rekursive Methoden



## paco89 (15. Feb 2012)

hallo, 

ich hab folgende versucht zu lösen:

a) Die Funktion f sei definiert durch f(n,a,b) = a, falls n=0   und f(n-1,a+b,a) falls n > 0.


so und dazu habe ich mir folgende rekursive Methode gebastelt:


```
public class Fibonacci 
{
	 public int Fib(int n, int a, int b)
	{	
		tmp = 0;
		if(n=0)
			tmp = a;
		else if(n>0)
			tmp = Fib(n-1,a+b, a);
			
		return tmp;
			
			
	}
}
```


und als TestKlasse dann:


```
public class TestFib 
{
	public static void main (String[] args)
	{
		Fib(5,7,8);
	}
}
```



aber wenn ich das kompiliere kommt da die meldung, dass Fib(5,7,8) nicht gefunden werden kann. ich hab aber beide dateien doch in demselben ordner und außerdem ist doch meine methode Fib in der ersten klasse doch public oder? oder überseh ich da etwas?


----------



## eRaaaa (15. Feb 2012)

Die Methode Fib in deiner Fibonacci-Klasse ist aber nicht static, also brauchst du schon ein Objekt der Fibonacci-Klasse (oder eben die Methode static machen)
Generell sind da noch einige Fehler, z.B. ist tmp nirgends deklariert und du solltest dir NamingConventions direkt gleich aneignen (Methods should be verbs, in mixed case with the first letter lowercase, with the first letter of each internal word capitalized.)


----------



## The_S (15. Feb 2012)

Methodennamen schreibt man klein. Du musst Java schon noch sagen, in welcher Klasse deine Methode liegt:


```
Fibonacci.Fib(5,7,8)
```


----------



## fibeline (15. Feb 2012)

Noch ein Fehler:

```
if(n=0)
```


```
n=0
```
 ist eine Zuweisung, aber du willst ja vergleichen. Also:

```
if(n==0)
```

Klammern solltest du auch immer benutzen, dann ist dein Code übersichtlicher und guter Stil ist es auch 

Gruß


----------

