# fakultät rekusriv



## Maximaltime (4. Jul 2011)

Hallo bei zeile 9 kommt missing return statement kann mir jemand helfen? wie man sieht will ich ganz einfach fakultaet rekursiv berechnen.



```
public class fakultaet{


	public static int fakultaets(int n){
	int k=1;

	if( n==1) return k;
	else if(n<1) return k=n*fakultaets(n-1);
}

	public static void main(String[]args){


		int f=6;
		int zahl=fakultaets(f);
		System.out.println("Die Fakultät von "+f+" ist "+zahl);
	}
}
```


----------



## Sonecc (4. Jul 2011)

Wenn n = 1 ist, dann gibt er k zurück
Wenn n < 1 ist, dann gibt er k=n*fakultaets(n-1) zurück
Wenn n > 1 ist, gibt er gar nichts zurück -> Missing return statement

Immer darauf achten, dass eine Methode die etwas zurückgeben soll unter allen umständen auch etwas zurückgibt!


----------



## muckelzwerg (4. Jul 2011)

Wenn Du an den if-klauseln ein return hast, kannst Du dir das "else" sparen. Und dann versuch mal die Funktion so umzustellen, dass es ein return-statement ohne irgendeine Bedingung gibt, das am Ende des Blocks steht. Damit sollte es etwas weniger verschachtelt und leichter zu lesen werden.

```
if( ... ){
    return ...;
}
return ...;
```

Und dann denk nochmal über die Variablen nach. Brauchst Du "k" wirklich? Geht es ohne "k" vielleicht einfacher?


----------



## Andi_CH (5. Jul 2011)

Erst mal sauber einrücken und die hier so hochgelobten Konventionen einhalten:


```
public class Fakultaet {

	public static int fakultaets(int n) {
		int k=1;

		if (n == 1) 
			return k;
		else if (n < 1)
			return k = n * fakultaets(n - 1);
	}

	public static void main(String[]args) {
		int f = 6;
		int zahl = fakultaets(f);
		System.out.println("Die Fakultät von " + f + " ist " + zahl);
	}
}
```

Die Fehlermeldung auf Zeile 3 heisst übrigens: "This method must return a result of type int"

Ausserdem n < 1? 0 ist schon ausgeschlossen also sind hier nur noch negative n möglich und davon ist IMO die Fakultät gar nicht definiert.

Was gibt denn deine Funktion 
	
	
	
	





```
fakultaets
```
 im Falle von n > 1 zurück???


----------

