Methoden und Schleife

Neue Frage »

Auf diesen Beitrag antworten »
SarahK. 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 :-)
 
Auf diesen Beitrag antworten »
eulerscheZahl

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.
Auf diesen Beitrag antworten »
SarahK.

Ich programmiere in Java. Ich kenne beide Varianten, wobei ich bei der iterativen sicherer bin :-)
Auf diesen Beitrag antworten »
Karlito

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
 
Auf diesen Beitrag antworten »
SarahK.

Vielen Dank :-)
 
Neue Frage »
Antworten »


Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »