Fakultätsprogramm in C: Wie berechnet man die Fakultät einer Zahl?



Faktor einer positiven ganzen Zahl ist das Produkt einer ganzen Zahl und aller darunter liegenden ganzen Zahlen. Erfahren Sie, wie Sie ein Fakultätsprogramm in C schreiben. Beispiel: 3! = 3 * 2 * 1

Die Fakultät einer positiven ganzen Zahl ist das Produkt einer ganzen Zahl und aller darunter liegenden ganzen Zahlen, d. H. Die Fakultät der Zahl n (dargestellt durch n!) Wäre gegeben durch

n! = 1 * 2 * 3 * 4 *. . . . . * n





Die Fakultät 0 ist als 1 definiert und nicht für negative ganze Zahlen definiert. Es gibt mehrere Möglichkeiten, es zu finden, die unten aufgeführt sind:

Lass uns anfangen.



Factorial Using For Loop

Dies ist der einfachste und einfachste Weg, die Fakultät einer Zahl zu finden. Besuchen wir zuerst den Code -

#include int main () {int I, num, fact = 1 // Fakultät als 1 definieren, da der kleinste Wert 1 ist printf ('Geben Sie eine Zahl ein, um die Fakultät zu berechnen') scanf ('% d', & num) if (num<0) //if the input is a negative integer { printf (“Factorial is not defined for negative numbers.”) } else { for(i=1i0, therefore fact value remains 1 { fact = fact * i // keeps on multiplying and storing in the value of factorial till the input integer is reached } printf(“Factorial of %d = %dn”, num, fact) } return 0 //since we have defined the main() method with a return value of integer type }

Ausgabe-

Faktor 5 = 120



Wie installiere ich Hadoop unter Linux?

Erläuterung - -

Die Zahl, deren Fakultät gefunden werden soll, wird als Eingabe genommen und in einer Variablen gespeichert und überprüft, ob sie negativ ist oder nicht. Wenn die eingegebene Ganzzahl negativ ist, wird die entsprechende Meldung angezeigt. Der Wert von Fakultät ist als 1 vordefiniert, da sein kleinster Wert 1 ist. Die for-Schleife wird für positive ganze Zahlen ausgeführt (mit Ausnahme von 0, für die die Testbedingung falsch ist und somit die Tatsache Null bleibt). In der for-Schleife wird der Wert von Fakultät mit jeder ganzen Zahl multipliziert und nacheinander gespeichert, bis die Eingangsnummer erreicht ist. Bei Eingabe = 5 geht der Fluss beispielsweise zur for-Schleife, und die folgenden Schritte finden statt:

Fakt = 1, i = 1 -> Fakt = 1 * 1 = 1 -> i = 2
Fakt = 1, i = 2 -> Fakt = 1 * 2 = 2 -> i = 3
Fakt = 2, i = 3 -> Fakt = 2 * 3 = 6 -> i = 4
Fakt = 6, i = 4 -> Fakt = 6 * 4 = 24 -> i = 5
Fakt = 24, i = 5 -> Fakt = 24 * 5 = 120 -> i = 6

Jetzt 6> 5, daher wird die Testbedingung falsch und die Schleife wird beendet. Der Wert von Fakultät wird angezeigt.

Faktorielle Verwendung von Funktionen

Dieser Ansatz ist als modularer Ansatz bekannt und sollte für die Programmierung befolgt werden, da er sehr effizient ist. Einer der Vorteile besteht darin, dass wir, wenn wir Änderungen am Code vornehmen müssen, anstatt den vollständigen Code zu ändern, einfach die betreffende Funktion ändern können. Der Code zum Ermitteln der Fakultät einer Zahl unter Verwendung dieses Ansatzes ist unten gezeigt

#include long Fakultät (int num) // Funktion zur Berechnung der Fakultät, die einen ganzzahligen Wert als Parameter verwendet und einen Wert vom Typ int zurückgibt {int i long fact = 1 für (i = 1 i<= num i++) fact = fact * i return fact //returns to function call } int main() //execution begins from main() method { int num printf('Enter a number to calculate its factorialn') scanf('%d', &num) if(num<0) //if the input is a negative integer { printf('Factorial is not defined for negative numbers.') } printf('Factorial of %d = %dn', num, factorial(num)) //call to factorial function passing the input as parameter return 0 } 

Ausgabe - - Faktor 5 = 120

Was sind Instanzen in Java

Erläuterung-

Die Logik für das Programm ist dieselbe, außer dass unterschiedliche Funktionen verwendet werden, um die Fakultät zu berechnen und den Wert an die Hauptmethode zurückzugeben, von der aus die Ausführung beginnt.

Faktoriell mit Rekursion

Rekursion ist der Prozess, bei dem sich eine Funktion selbst aufruft und die entsprechende Funktion als rekursive Funktion bezeichnet wird. Es besteht aus zwei Teilen - einer Grundbedingung und einem rekursiven Aufruf. Die Lösung für die Basisbedingung wird bereitgestellt, während die Lösung für den größeren Wert durch Umrechnung in kleinere Werte gelöst werden kann, bis die Basislösung erreicht und verwendet ist.

Unten finden Sie den Code zum Finden der Fakultät mithilfe der Rekursion: -

#include int fact (int) // Funktionsprototyp int main () {int num printf ('Geben Sie die Zahl ein, deren Fakultät zu finden ist:') scanf ('% d', & num) if (num<0) { printf('ERROR. Factorial is not defined for negative integers') } printf('Factorial of %d is %d', num, fact(num)) //first call is made return 0 } int fact(int num) { if(num==0) //base condition { return 1 } else{ return(num*fact(num-1)) //recursive call } } 

Ausgabe - Faktor 5 = 120

Erläuterung - -Angenommen, der Benutzer gibt 5 als Eingabe ein, dann ist in der main () -Methode der Wert von num 5. Während der Ablauf in der printf-Anweisung (Zeile 12) ausgeführt wird, wird eine Funktion zum Aufrufen von fact (5) ausgeführt. Nun ist für Tatsache (5) num 5, was nicht gleich 0 ist, daher geht der Fluss zur else-Anweisung, wo als Gegenanweisung ein rekursiver Aufruf erfolgt und Fakt (4) ausgeführt wird. Der Vorgang wird wiederholt, bis die Grundbedingung, d. H. Num = 0, erreicht ist und 1 zurückgegeben wird. Nun geht der Fluss zu Fakt (1), von wo 1 (wie für Fakt (1) num = 1) * 1 (von Fakt (0) zurückgegebener Wert) zurückgegeben wird. Dieser Vorgang wird wiederholt, bis der gewünschte Wert erreicht ist.

Zeit- und Raumkomplexität - Rekursions-V / S-Iteration

Für Rekursion-

Hinsichtlich Zeitkomplexität Wir wissen, dass Fakultät 0 der einzige Vergleich ist. Daher ist T (0) = 1. Für Fakultäten einer anderen Zahl umfasst der Prozess einen Vergleich, eine Multiplikation, eine Subtraktion und einen Funktionsaufruf. Deshalb

Android Studio Tutorial für Anfänger

T (n) = T (n-1) +3
= T (n-2) +6
= T (n-3) +9
= & hellip.
= T (n-k) + 3k

Da wir T (0) = 1 und für k = n wissen, ist (n-k) = 0

Daher ist T (n) = T (0) + 3n
= 1 + 3n

Daher ist die zeitliche Komplexität des Codes O (n).

Hinsichtlich Raumkomplexität, Für jeden Aufruf wird ein Stapel erstellt, der beibehalten wird, bis sein Wert erreicht istberechnet und zurückgegeben. Zum Beispiel müssen für n = 5 die folgenden Stapel beibehalten werden

f (5) -> f (4) -> f (3) -> f (2) -> f (1) -> f (0)

Wie wir sehen können, müssen 5 Stapel beibehalten werden, bis ein Aufruf von f (0) erreicht ist, dessen Wert istbekannt und wird zurückgegeben. Daher müssen für n Fakultäten n Stapel beibehalten werden. Also Raumkomplexitätist O (n). Aus den obigen Bildern ist auch ersichtlich, dass für n = 5 5 Stapel sein müssengepflegt. Daher müssen für n Fakultäten n Stapel beibehalten werden. Somit ist die Raumkomplexität O (n).

Für Iteration-

Hinsichtlich Zeitkomplexität, Es gibt n Iterationen innerhalb der Schleife, daher ist die zeitliche Komplexität O (n).

Hinsichtlich Raumkomplexität, Für die iterative Lösung muss nur ein Stapel verwaltet werden, und eine ganzzahlige Variable wird verwendet. Die Raumkomplexität ist also O (1).

Das ist alles für diesen Artikel. Ich hoffe, Sie haben das Konzept des Fakultätsprogramms in C zusammen mit der zeitlichen Komplexität verstanden.

Wenn Sie auf Fragen stoßen, können Sie alle Ihre Fragen im Kommentarbereich von „Fakultätsprogramm in C“ stellen. Unser Team beantwortet diese gerne.