Program Factorial dalam C: Bagaimana mengira faktorial nombor?



Faktor faktor bilangan bulat positif adalah produk bagi nombor bulat dan semua nombor bulat di bawahnya. Belajar bagaimana menulis program faktorial di C. Contoh: 3! = 3 * 2 * 1

Faktor faktor bilangan bulat positif adalah produk bilangan bulat dan semua bilangan bulat di bawahnya, iaitu faktorial nombor n (diwakili oleh n!) Akan diberikan oleh

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





Faktor faktor 0 didefinisikan sebagai 1 dan tidak didefinisikan untuk bilangan bulat negatif. Terdapat pelbagai cara untuk mencarinya yang disenaraikan di bawah-

Mari kita mulakan.



Menggunakan faktorial untuk gelung

Ini adalah kaedah termudah dan termudah untuk mencari faktor nombor. Mari kita lawati kod terlebih dahulu -

#include int main () {int I, num, fact = 1 // mendefinisikan faktorial sebagai 1 kerana nilai paling sedikit adalah 1 printf ('Masukkan nombor untuk mengira faktorialnya') scanf ('% d', & num) jika (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 }

Pengeluaran-

Faktor faktor 5 = 120



Penjelasan -

Nombor yang faktorialnya dijumpai diambil sebagai input dan disimpan dalam pemboleh ubah dan diperiksa sama ada negatif atau tidak. Sekiranya bilangan bulat yang dimasukkan negatif maka mesej yang sesuai akan dipaparkan. Nilai faktorial dipratentukan menjadi 1 kerana nilai terkurangnya adalah 1. Gelung bagi dilaksanakan untuk bilangan bulat positif (kecuali 0 yang keadaan ujiannya palsu dan oleh itu fakta tetap sifar). Dalam gelung untuk, nilai faktorial dikalikan dengan setiap bilangan bulat dan disimpan berturut-turut sehingga nombor input tercapai. Sebagai contoh, untuk input = 5, aliran menuju ke gelung dan langkah-langkah berikut berlaku-

c ++ susun atur int

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

Sekarang 6> 5, oleh itu keadaan ujian menjadi salah dan gelung ditamatkan. Nilai faktorial dipaparkan.

Faktor Menggunakan Fungsi

Pendekatan ini dikenali sebagai pendekatan modular dan harus diikuti untuk pengaturcaraan kerana cukup efisien. Salah satu kelebihannya ialah apabila kita perlu membuat perubahan pada kod, bukannya menukar kod yang lengkap, kita hanya dapat mengubah fungsi yang bersangkutan. Kod untuk mencari faktorial nombor menggunakan pendekatan ini ditunjukkan di bawah

#masuk faktorial panjang (int num) // fungsi untuk mengira faktorial yang mengambil nilai integer sebagai parameter dan mengembalikan nilai jenis int {int i long fact = 1 untuk (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 } 

Pengeluaran - Faktor faktor 5 = 120

Penjelasan-

peruntukan memori dinamik dalam c ++

Logik untuk program adalah sama kecuali fungsi yang berbeza digunakan untuk mengira faktorial dan mengembalikan nilai ke kaedah utama dari mana pelaksanaannya bermula.

Faktorial Menggunakan Pengulangan

Rekursi adalah proses di mana fungsi memanggil dirinya sendiri dan fungsi yang sesuai disebut fungsi rekursif. Ia terdiri daripada dua bahagian - keadaan asas dan panggilan berulang. Penyelesaian ke kondisi dasar diberikan sementara solusi ke nilai yang lebih besar dapat diselesaikan dengan menukar ke nilai yang lebih kecil hingga larutan dasar tercapai dan digunakan.

Berikut adalah kod untuk mencari faktorial menggunakan rekursi: -

#include int fact (int) // fungsi prototaip int utama () {int num printf ('Masukkan nombor yang faktorialnya akan dicari:') 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 } } 

Pengeluaran - Faktor faktor 5 = 120

Penjelasan -Katakan pengguna memasukkan 5 sebagai input, maka dalam kaedah utama () nilai num adalah 5. Semasa aliran masuk dalam pernyataan printf (baris 12) fungsi panggilan ke fakta (5) dibuat. Sekarang untuk fakta (5) num adalah 5 yang tidak sama dengan 0, oleh itu aliran menuju ke pernyataan lain di mana dalam penyataan balasan, panggilan rekursif dibuat dan fakta (4) dibuat. Proses diulang sehingga keadaan asas, iaitu, num = 0 tercapai dan 1 dikembalikan. Sekarang aliran menuju fakta (1) dari mana 1 (untuk fakta (1) num = 1) * 1 (nilai dikembalikan dari fakta (0)) dikembalikan. Proses ini diulang sehingga nilai yang diperlukan diperoleh.

Kerumitan Masa & Ruang - Pengulangan Pengulangan V / S

Untuk Pengembaraan-

Mengenai kerumitan masa , kita tahu bahawa faktorial 0 adalah satu-satunya perbandingan. Oleh itu T (0) = 1. Untuk faktor nombor lain prosesnya melibatkan satu perbandingan, satu pendaraban, satu pengurangan, dan satu panggilan fungsi. Oleh itu

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

Oleh kerana kita tahu T (0) = 1 dan untuk k = n, (n-k) = 0

Oleh itu T (n) = T (0) + 3n
= 1 + 3n

Oleh itu kerumitan kod masa adalah O (n).

apa yang dilakukan oleh pemaju tableau

Mengenai kerumitan ruang, timbunan dibuat untuk setiap panggilan yang akan dikekalkan sehingga nilainyadikira dan dikembalikan. Contohnya untuk n = 5 timbunan berikut harus dijaga

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

Seperti yang kita lihat bahawa 5 tumpukan harus dijaga sehingga panggilan ke f (0) tercapai yang nilainyadikenali dan dikembalikan. Oleh itu untuk n faktorial, timbunan n perlu dijaga. Oleh itu kerumitan ruangialah O (n). Ini juga dapat dilihat dari gambar di atas bahawa untuk n = 5, 5 timbunan mesti adadikekalkan. Oleh itu untuk n faktorial, timbunan n perlu dijaga. Oleh itu kerumitan ruang adalah O (n).

Untuk Pengulangan-

Mengenai kerumitan masa, terdapat n lelaran di dalam gelung, oleh itu kerumitan masa adalah O (n).

Mengenai kerumitan ruang, untuk penyelesaian berulang hanya terdapat satu timbunan yang perlu dikekalkan dan pembolehubah integer digunakan. Jadi kerumitan ruang adalah O (1).

Itu sahaja untuk artikel ini. Saya harap anda telah memahami konsep program faktorial di C bersama dengan kerumitan masa.

Sekiranya anda menemui sebarang pertanyaan, jangan ragu untuk mengajukan semua soalan anda di bahagian komen 'program faktorial di C' dan pasukan kami akan dengan senang hati menjawab.