Informatiker Board (http://www.informatikerboard.de/board/index.php)
- Themengebiete (http://www.informatikerboard.de/board/board.php?boardid=1)
-- Praktische Informatik (http://www.informatikerboard.de/board/board.php?boardid=6)
--- Rekursive Funktion (http://www.informatikerboard.de/board/thread.php?threadid=2102)


Geschrieben von Erstsemester am 23.01.2015 um 19:43:

  Rekursive Funktion

Meine Frage:
Hi :-)

Ich frage mich echt gerade, wie ich es bei einer rekursiven Funktion schaffe, das ich nur am Ende die 720 als Ergebnis bekomme (einfaches Programm zur Fakultätsberechnung)

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
public class Dateiendung
{
	public static void main (String[]args)
	{
	       rekurs(6); 
	}

	
	static int rekurs (int wert)
	{
		int result = 1;
		if (wert >1) 
		{	
			result = wert*rekurs(wert-1);
			--wert; 
		}
		System.out.println(result);
		return result;
	}
			

}


Meine Ideen:
Vielen Dank ;-)



Geschrieben von eulerscheZahl am 23.01.2015 um 19:52:

 

Das Programm rechnet [latex]n! = n \cdot (n-1)![/latex] für n > 1, sonst ist das Ergebnis 1.
Das --wert; kannst du dir sparen.



Geschrieben von Erstsemester am 23.01.2015 um 19:56:

 

Vielen Dank für die Antwort, ich meinte aber etwas anderes :-)

Bei der Ausgabe bekomme ich alle Zahlen, also 1,2,6,24,120,720 angezeigt.

Ich möchte aber nur die 720 angezeigt bekommen.



Geschrieben von eulerscheZahl am 23.01.2015 um 19:58:

 

Dann solltest du das nicht innerhalb der rekursiven Funktion tun.
code:
1:
2:
3:
4:
public static void main (String[]args)
{
       System.out.println(rekurs(6)); 
}



Geschrieben von Erstsemester am 23.01.2015 um 20:06:

 

Verdammt, das hatte ich böse

Warum geht's jetzt bei dir und bei mir wieder nicht großes Grinsen großes Grinsen

Auf jeden Fall danke ;-)


Forensoftware: Burning Board, entwickelt von WoltLab GmbH