Schreiben Sie ein iteratives C/C++- und Java-Programm, um die Fakultät einer gegebenen positiven Zahl zu finden.
Das Fakultät einer nicht negativen ganzen Zahl n
ist das Produkt aller positiven ganzen Zahlen kleiner oder gleich n
. Es wird mit bezeichnet n!
. Factorial wird hauptsächlich verwendet, um die Gesamtzahl der Möglichkeiten zu berechnen n
verschiedene Objekte können in einer Sequenz angeordnet werden.
Zum Beispiel,
5! = 1 × 2 × 3 × 4 × 5 = 120
(5 distinct objects can be arranged into a sequence in 120 ways).
The value of 0! is 1
Die iterative Version verwendet eine Schleife, um das Produkt aller positiven ganzen Zahlen kleiner als gleich zu berechnen n
. Da die Fakultät einer Zahl sehr groß sein kann, wird der Datentyp der Fakultätsvariablen als deklariert unsigned long
.
Die Implementierung ist unten in C, Java und Python zu sehen:
C
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
#include <stdio.h> // Iterative Funktion zum Finden der Fakultät einer Zahl mit einer for-Schleife unsigned long factorial(int n) { unsigned long fact = 1; for (int i = 1; i <= n; i++) { fact = fact * i; } return fact; } int main() { int n = 5; printf("The Factorial of %d is %lu", n, factorial(n)); return 0; } |
Ergebnis:
The Factorial of 5 is 120
Java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
class Main { // Rekursive Funktion zum Finden der Fakultät einer Zahl public static long factorial(int n) { long fact = 1; for (int i = 1; i <= n; i++) { fact = fact * i; } return fact; } public static void main(String[] args) { int n = 5; System.out.println("The Factorial of " + n + " is " + factorial(n)); } } |
Ergebnis:
The Factorial of 5 is 120
Python
1 2 3 4 5 6 7 8 9 10 11 12 13 |
# Rekursive Funktion zum Finden der Fakultät einer Zahl def factorial(n): fact = 1 for i in range(1, n + 1): fact = fact * i return fact if __name__ == '__main__': n = 5 print(f'The Factorial of {n} is {factorial(n)}') |
Ergebnis:
The Factorial of 5 is 120
Die Zeitkomplexität der obigen Lösung ist O(n) und benötigt ständig Platz.
Siehe auch:
Übung: Effizientes Drucken von Fakultätsreihen in einem bestimmten Bereich