Program Faktorial di C: Bagaimana cara menghitung faktorial sebuah bilangan?



Faktorial bilangan bulat positif adalah hasil kali dari bilangan bulat dan semua bilangan bulat di bawahnya. Pelajari bagaimana menulis program faktorial dalam C. Contoh: 3! = 3 * 2 * 1

Faktorial bilangan bulat positif adalah hasil kali dari bilangan bulat dan semua bilangan bulat di bawahnya, yaitu, faktorial bilangan n (diwakili oleh n!) Akan diberikan oleh

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





Faktorial 0 didefinisikan sebagai 1 dan tidak ditentukan untuk bilangan bulat negatif. Ada beberapa cara untuk menemukannya yang tercantum di bawah ini-

Mari kita mulai.



Faktorial Menggunakan For Loop

Ini adalah cara termudah dan termudah untuk mencari faktorial sebuah bilangan. Mari kita kunjungi dulu kodenya -

#include int main () {int I, num, fact = 1 // mendefinisikan faktorial sebagai 1 karena nilai terkecil adalah 1 printf (“Masukkan angka untuk menghitung faktorialnya”) 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 }

Keluaran-

cara mengatur classpath di windows 10

Faktorial 5 = 120



Penjelasan -

Bilangan yang faktorialnya ditemukan diambil sebagai input dan disimpan dalam variabel dan diperiksa apakah bernilai negatif atau tidak. Jika bilangan bulat yang dimasukkan negatif maka pesan yang sesuai akan ditampilkan. Nilai faktorial ditentukan sebelumnya sebagai 1 karena nilai terkecilnya adalah 1. Perulangan for dijalankan untuk bilangan bulat positif (kecuali untuk 0 yang kondisi pengujiannya salah dan fakta tetap nol). Dalam perulangan for, nilai faktorial dikalikan dengan setiap bilangan bulat dan disimpan secara berurutan sampai jumlah masukan tercapai. Misalnya, untuk input = 5, aliran menuju loop for dan langkah-langkah berikut berlangsung

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 karena itu kondisi pengujian menjadi salah dan loop dihentikan. Nilai faktorial ditampilkan.

Faktorial Menggunakan Fungsi

Pendekatan ini dikenal sebagai pendekatan modular dan harus diikuti untuk pemrograman karena cukup efisien. Salah satu kelebihannya adalah ketika kita perlu melakukan perubahan pada kode maka alih-alih mengubah kode secara lengkap, kita cukup memodifikasi fungsi yang bersangkutan. Kode untuk mencari faktorial sebuah bilangan dengan menggunakan pendekatan ini ditunjukkan di bawah ini

#include long factorial (int num) // fungsi untuk menghitung faktorial yang mengambil nilai integer sebagai parameter dan mengembalikan nilai tipe int {int i long fact = 1 for (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 } 

Keluaran - Faktorial 5 = 120

Penjelasan-

Logika untuk program ini sama, kecuali fungsi yang berbeda digunakan untuk menghitung faktorial dan mengembalikan nilai ke metode utama tempat eksekusi dimulai.

Faktorial Menggunakan Rekursi

Rekursi adalah proses di mana suatu fungsi memanggil dirinya sendiri dan fungsi yang sesuai disebut fungsi rekursif. Ini terdiri dari dua bagian - kondisi dasar dan panggilan rekursif. Solusi untuk kondisi dasar disediakan sedangkan solusi untuk nilai yang lebih besar dapat diselesaikan dengan mengonversi ke nilai yang lebih kecil hingga solusi dasar tercapai dan digunakan.

Di bawah ini adalah kode untuk mencari faktorial menggunakan rekursi: -

apa itu cloud layanan tenaga penjualan
#include int fact (int) // function prototype int main () {int num printf ('Masukkan nomor yang faktorialnya akan ditemukan:') 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 } } 

Keluaran - Faktorial 5 = 120

Penjelasan -Misalkan pengguna memasukkan 5 sebagai input, maka dalam metode main () nilai num adalah 5. Saat aliran masuk dalam pernyataan printf (baris 12) fungsi panggilan ke fakta (5) dibuat. Sekarang untuk fakta (5) bilangan adalah 5 yang tidak sama dengan 0, oleh karena itu aliran menuju ke pernyataan lain di mana dalam pernyataan kembali panggilan rekursif dibuat dan fakta (4) dibuat. Proses ini diulangi sampai kondisi dasar, yaitu num = 0 tercapai dan 1 dikembalikan. Sekarang aliran menuju fakta (1) dari mana 1 (sebagai fakta (1) num = 1) * 1 (nilai yang dikembalikan dari fakta (0)) dikembalikan. Proses ini diulangi sampai diperoleh nilai yang dibutuhkan.

Kompleksitas Ruang & Waktu - Iterasi V / S rekursi

Untuk Rekursi-

Mengenai kompleksitas waktu , kita tahu bahwa faktorial 0 adalah satu-satunya perbandingan. Oleh karena itu T (0) = 1. Untuk faktorial bilangan lainnya, prosesnya melibatkan satu perbandingan, satu perkalian, satu pengurangan, dan satu pemanggilan fungsi. Karena itu

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

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

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

Oleh karena itu kompleksitas waktu dari kode tersebut adalah O (n).

Mengenai kompleksitas ruang, tumpukan dibuat untuk setiap panggilan yang akan dipertahankan sampai nilainyadihitung dan dikembalikan. Misalnya untuk n = 5 tumpukan berikut harus dipertahankan

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

Seperti yang dapat kita lihat bahwa 5 tumpukan harus dipertahankan sampai panggilan ke f (0) tercapai yang nilainyadiketahui dan dikembalikan. Oleh karena itu untuk n faktorial, n tumpukan harus dipertahankan. Demikian kompleksitas ruangadalah O (n). Juga terbukti dari gambar di atas bahwa untuk n = 5, harus ada 5 tumpukanterawat. Oleh karena itu untuk n faktorial, n tumpukan harus dipertahankan. Jadi kompleksitas ruang adalah O (n).

Untuk Iterasi-

Mengenai kompleksitas waktu, ada n iterasi di dalam loop, oleh karena itu kompleksitas waktu adalah O (n).

Mengenai kompleksitas ruang, untuk solusi iteratif hanya ada satu tumpukan yang perlu dipertahankan dan variabel integer digunakan. Jadi kompleksitas ruangnya adalah O (1).

apa flume di hadoop

Sekian untuk artikel ini. Saya harap Anda memahami konsep program faktorial dalam C beserta kerumitan waktunya.

Jika Anda menemukan pertanyaan, jangan ragu untuk menanyakan semua pertanyaan Anda di bagian komentar 'program faktorial di C' dan tim kami akan dengan senang hati menjawabnya.