Factorial Program in C: Πώς να υπολογίσετε το faktorial ενός αριθμού;

Παράγοντα ενός θετικού ακέραιου είναι το προϊόν ενός ακέραιου και όλοι οι ακέραιοι κάτω από αυτόν. Μάθετε πώς να γράφετε παραγοντικό πρόγραμμα στο C. Παράδειγμα: 3! = 3 * 2 * 1

Factorial ενός θετικού ακέραιου είναι το προϊόν ενός ακέραιου και όλοι οι ακέραιοι κάτω από αυτόν, δηλαδή, το παραγοντικό του αριθμού n (αντιπροσωπεύεται από το n!)



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



Το παραγοντικό του 0 ορίζεται ως 1 και δεν ορίζεται για αρνητικούς ακέραιους αριθμούς. Υπάρχουν πολλοί τρόποι για να το βρείτε που παρατίθενται παρακάτω-

τι συνδέει με java

Ας αρχίσουμε.



Παραγοντική χρήση για βρόχο

Είναι ο ευκολότερος και απλούστερος τρόπος για να βρείτε το παραγοντικό ενός αριθμού. Ας επισκεφτούμε πρώτα τον κωδικό -

#include int main () {int I, num, fact = 1 // ορίζοντας το faktorial ως 1, δεδομένου ότι η ελάχιστη τιμή είναι 1 printf ('Εισαγάγετε έναν αριθμό για τον υπολογισμό του παράγοντα') 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 }

Παραγωγή-

Παράγοντα 5 = 120



Εξήγηση -

Ο αριθμός του οποίου το παραγοντικό θα βρεθεί λαμβάνεται ως είσοδος και αποθηκεύεται σε μια μεταβλητή και ελέγχεται εάν είναι αρνητικός ή όχι. Εάν ο ακέραιος αριθμός που έχει εισαχθεί είναι αρνητικός, εμφανίζεται το κατάλληλο μήνυμα. Η τιμή των παραγοντικών είναι προκαθορισμένη ως 1, καθώς η ελάχιστη τιμή της είναι 1. Ο βρόχος για εκτέλεση εκτελείται για θετικούς ακέραιους αριθμούς (εκτός από το 0 για το οποίο η συνθήκη δοκιμής είναι ψευδής και συνεπώς το γεγονός παραμένει μηδέν) Στο βρόχο για, η τιμή των παραγοντικών πολλαπλασιάζεται με κάθε ακέραιο και αποθηκεύεται διαδοχικά έως ότου επιτευχθεί ο αριθμός εισαγωγής. Για παράδειγμα, για είσοδο = 5, η ροή πηγαίνει για βρόχο και πραγματοποιούνται τα ακόλουθα βήματα-

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

Τώρα 6> 5, επομένως η κατάσταση δοκιμής γίνεται ψευδής και ο βρόχος τερματίζεται. Εμφανίζεται η τιμή των παραγοντικών.

Παράγοντες που χρησιμοποιούν συναρτήσεις

Αυτή η προσέγγιση είναι γνωστή ως αρθρωτή προσέγγιση και πρέπει να ακολουθηθεί για προγραμματισμό, καθώς είναι αρκετά αποτελεσματική. Ένα από τα πλεονεκτήματά του είναι ότι όταν πρέπει να κάνουμε αλλαγές στον κώδικα, αντί να αλλάξουμε τον πλήρη κώδικα, μπορούμε απλώς να τροποποιήσουμε τη σχετική λειτουργία. Ο κώδικας για την εύρεση του παράγοντα ενός αριθμού χρησιμοποιώντας αυτήν την προσέγγιση φαίνεται παρακάτω

#include long factorial (int num) // συνάρτηση για τον υπολογισμό factorial που παίρνει μια ακέραια τιμή ως παράμετρο και επιστρέφει μια τιμή int τύπου {int i long fact = 1 για (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 } 

Παραγωγή - Παράγοντα 5 = 120

Εξήγηση-

Η λογική για το πρόγραμμα είναι η ίδια εκτός από το ότι χρησιμοποιείται διαφορετική συνάρτηση για τον υπολογισμό του παραγοντικού και την επιστροφή της τιμής στην κύρια μέθοδο από όπου ξεκινά η εκτέλεση.

Παράγοντα που χρησιμοποιεί αναδρομή

Η αναδρομή είναι η διαδικασία κατά την οποία μια συνάρτηση καλείται και η αντίστοιχη συνάρτηση ονομάζεται αναδρομική συνάρτηση. Αποτελείται από δύο μέρη - μια βασική κατάσταση και μια αναδρομική κλήση. Η λύση στη βασική κατάσταση παρέχεται ενώ η λύση στη μεγαλύτερη τιμή μπορεί να επιλυθεί με μετατροπή σε μικρότερες τιμές έως ότου επιτευχθεί και χρησιμοποιηθεί το βασικό διάλυμα.

Παρακάτω είναι ο κωδικός για την εύρεση παραγοντικών χρησιμοποιώντας την αναδρομή: -

#include int fact (int) // πρωτότυπο συνάρτησης int main () {int num printf ('Εισαγάγετε τον αριθμό του οποίου το παραγοντικό θα βρεθεί:') 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 } } 

Παραγωγή - Παράγοντα 5 = 120

Εξήγηση -Ας υποθέσουμε ότι ο χρήστης εισάγει 5 ως είσοδο, και στη συνέχεια στην κύρια () μέθοδο η τιμή του αριθμού είναι 5. Καθώς η ροή πηγαίνει στη δήλωση printf (γραμμή 12) πραγματοποιείται μια συνάρτηση call to fact (5). Τώρα για το γεγονός (5) ο αριθμός είναι 5 το οποίο δεν είναι ίσο με το 0, επομένως η ροή πηγαίνει στην άλλη δήλωση όπου σε μια δήλωση επιστροφής γίνεται μια αναδρομική κλήση και γίνεται το γεγονός (4). Η διαδικασία επαναλαμβάνεται έως ότου επιτευχθεί η βασική συνθήκη, δηλαδή, ο αριθμός = 0 και το 1 επιστρέφεται. Τώρα η ροή πηγαίνει στο γεγονός (1) από όπου επιστρέφεται 1 (όπως στην πραγματικότητα (1) αριθ. = 1) * 1 (τιμή που επιστρέφεται από το γεγονός (0)). Αυτή η διαδικασία επαναλαμβάνεται έως ότου επιτευχθεί η απαιτούμενη τιμή.

Πολυπλοκότητα χρόνου και χώρου - Επανάληψη V / S

Για αναδρομή-

Σχετικά με χρονική πολυπλοκότητα , γνωρίζουμε ότι το παραγοντικό 0 είναι η μόνη σύγκριση. Επομένως T (0) = 1. Για παραγοντικούς οποιουδήποτε άλλου αριθμού, η διαδικασία περιλαμβάνει μία σύγκριση, έναν πολλαπλασιασμό, μία αφαίρεση και μία κλήση συνάρτησης. Ως εκ τούτου

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

Δεδομένου ότι γνωρίζουμε T (0) = 1 και για k = n, (n-k) = 0

Επομένως T (n) = T (0) + 3n
= 1 + 3n

Επομένως, η πολυπλοκότητα του κώδικα είναι O (n).

Σχετικά με διαστημική πολυπλοκότητα, δημιουργείται μια στοίβα για κάθε κλήση η οποία θα διατηρηθεί έως ότου είναι η αξία τηςυπολογίστηκε και επέστρεψε. Για παράδειγμα για n = 5 πρέπει να διατηρηθούν οι ακόλουθες στοίβες

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

Όπως μπορούμε να δούμε ότι 5 στοίβες θα πρέπει να διατηρηθούν έως ότου επιτευχθεί μια κλήση στο f (0) της οποίας η τιμή είναιείναι γνωστή και επιστρέφεται. Επομένως, για n factorial, n stack θα πρέπει να διατηρηθούν. Έτσι, η πολυπλοκότητα του χώρουείναι O (n). Είναι επίσης προφανές από τις παραπάνω εικόνες ότι για n = 5, 5 στοίβες θα πρέπει να είναιδιατηρείται. Επομένως, για n factorial, n stack θα πρέπει να διατηρηθούν. Έτσι, η πολυπλοκότητα του διαστήματος είναι O (n).

αριθμοί fibonacci c ++

Για επανάληψη-

Σχετικά με χρονική πολυπλοκότητα, Υπάρχουν n επαναλήψεις εντός του βρόχου, επομένως η πολυπλοκότητα του χρόνου είναι O (n).

Σχετικά με διαστημική πολυπλοκότητα, για επαναληπτική λύση υπάρχει μόνο μία στοίβα που πρέπει να διατηρηθεί και χρησιμοποιείται μια ακέραια μεταβλητή. Έτσι, η πολυπλοκότητα του διαστήματος είναι O (1).

Αυτό είναι όλο για αυτό το άρθρο. Ελπίζω να έχετε κατανοήσει την έννοια του παραγοντικού προγράμματος στο C μαζί με τις χρονικές περιπλοκές.

Εάν συναντήσετε οποιεσδήποτε ερωτήσεις, μη διστάσετε να υποβάλετε όλες τις ερωτήσεις σας στην ενότητα σχολίων του 'factorial program in C' και η ομάδα μας θα χαρεί να απαντήσει.