Informatiker Board (http://www.informatikerboard.de/board/index.php)
- Themengebiete (http://www.informatikerboard.de/board/board.php?boardid=1)
-- Sonstige Fragen (http://www.informatikerboard.de/board/board.php?boardid=25)
--- Methoden und Schleife (http://www.informatikerboard.de/board/thread.php?threadid=1965)
Geschrieben von SarahK. am 15.11.2014 um 14:33:
Methoden und Schleife
Meine Frage:
Hey Leute,
ich bin dringend auf Eure Hilfe angewiesen.
Die ganze Zeit versuche ich jetzt schon, das folgende Phänomen hinzubekommen.
Berechnen möchte ich die Fakultät einer Zahl (zum Beispiel 5).
Meine Ideen:
Ich dachte mir jetzt, dass könnte man bestimmt mit Funktionsaufruf und Funktionsdefinition schreiben. In den Funktionsaufruf die Zahl 5 und in die Definition eine Schleife welche jeweils um 1 verringert. Dann noch im Aufruf die Multiplikation beider Zahlen.
Allerdings ist das in der Umsetzung für mich dermaßen komplex; Gibt es vielleicht noch eine andere Möglichkeit?
Natürlich könnte ich eine Lösung aus Google nehmen, das hilft mir aber nichts, da ich dann zwar die Lösung habe, es aber immer noch nicht anwenden kann.
Vielen Dank für Eure Hilfe :-)
Geschrieben von eulerscheZahl am 15.11.2014 um 14:40:
Das Vorgehen das du beschreibst, ist schon richtig.
Es gibt da zwei verschiedene Ansätze:
1. iterativ:
eine Variable für das Ergebnis definieren (Anfangswert = 1)
und in einer Schleife von 2 bis n (z.B. 5) wird das Ergebnis mit dem Schleifenzähler multipliziert.
2. rekursiv:
n! = n * (n-1)!
die Funktion ruft sich so lange selbst auf, bis das Argument 0 ist und liefert dann eine 1 als Ergebnis zurück.
Wenn du mir sagst, ob die eine bestimmte Programmiersprache verwendest, kann ich dir vermutlich auch Code geben.
Geschrieben von SarahK. am 15.11.2014 um 15:21:
Ich programmiere in Java. Ich kenne beide Varianten, wobei ich bei der iterativen sicherer bin :-)
Geschrieben von Karlito am 16.11.2014 um 15:34:
Hallo SahraK.,
hier zwei Möglichkeiten das Problem zu lösen:
| 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:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
|
public class Faculty {
public static void main(String[] args)
{
int x = 5;
int result1, result2;
result1 = iterativ(x);
System.out.println("iterativ: " + result1);
result2 = rekursiv(x);
System.out.println("rekursiv: " + result2);
}
private static int rekursiv(int x) {
if (x==0)
{
return 1;
}
else
{
return x * rekursiv(x-1);
}
}
private static int iterativ(int x) {
int result = 1;
for(int i = 1; i<=x;i++)
{
result = result * i;
}
return result;
}
}
|
|
Gruß,
Karlito
Geschrieben von SarahK. am 17.11.2014 um 19:28:
Vielen Dank :-)
Forensoftware: Burning Board, entwickelt von WoltLab GmbH