Dalam latihan kode program bahasa C kali ini kita akan membahas cara membuat fungsi rekursif untuk menghitung faktorial.
Soal Fungsi Rekursif untuk Menghitung Faktorial
Buatlah kode program dalam bahasa C dalam bentuk fungsi rekursif untuk menghitung faktorial. Kode program menerima satu inputan angka dan menghasilkan jumlah faktorial.
Bonus: Buat juga versi dengan fungsi biasa (non-rekursif)
Berikut hasil yang di inginkan (1):
## Program Bahasa C Menghitung Faktorial ## =========================================== Input angka: 8 8! = 40320
Berikut hasil yang di inginkan (2):
## Program Bahasa C Menghitung Faktorial ## =========================================== Input angka: 11 11! = 39916800
Tips Membuat Fungsi Rekursif
Dalam programming, fungsi rekursif adalah fungsi yang memanggil dirinya sendiri. Untuk beberapa kasus, fungsi rekursif bisa lebih efisien, tapi penulisannya memang tidak mudah dan sering terjadi error / infinity loop.
Selain itu tidak semua masalah bisa dipecahkan dengan fungsi rekursif, menghitung faktorial menjadi contoh penerapan yang banyak dipakai untuk membuat fungsi rekursif.
Soal ini melatih pemahaman terkait logika matematika serta pembuatan function. Berikut tutorial pendahuluan yang bisa diikuti:
- Pengertian Variabel Bahasa C
- Cara Penggunaan Perintah scanf
- Tipe Data Integer Bahasa C
- Perulangan FOR Bahasa C
- Latihan Kode Program Bahasa C: Menghitung Faktorial
Dalam matematika, faktorial adalah hasil perkalian menaik dan ditulis dengan tanda seru " ! ". Sebagai contoh, 4 faktorial ditulis dengan 4!, dan nilainya adalah 1 * 2 * 3 * 4 = 24, atau 7 faktorial ditulis dengan 7! = 1 * 2 * 3 * 4 * 5 * 6 * 7 = 5040.
Kode Program Bahasa C Fungsi Rekursif untuk Menghitung Faktorial
Berikut salah satu solusi kode program fungsi rekursif untuk menghitung faktorial dengan bahasa C:
#include <stdio.h> int hitungFactorial(int input) { if(input > 1) return input * hitungFactorial(input - 1); else return 1; } int main(void) { printf("## Program Bahasa C Menghitung Faktorial ## \n"); printf("=========================================== \n\n"); int angka,hasil,i; printf("Input angka: "); scanf("%d",&angka); printf("%d! = %d \n",angka, hitungFactorial(angka)); return 0; }
Untuk membaca kode program yang melibatkan function, sebaiknya mulai dari bagian main() terlebih dahulu agar kita bisa melihat bagaimana fungsi tersebut dipanggil.
Di dalam fungsi main(), pada baris 17-18 kode program akan meminta inputan dari user, yakni angka yang akan dihitung faktorialnya. Angka tersebut disimpan ke dalam variabel angka.
Kemudian di baris 20 terdapat pemanggilan fungsi hitungFactorial(angka). Disini angka dikirim sebagai argument dari fungsi hitungFactorial().
Pendefinisian fungsi hitungFactorial() ada di baris 3-8. Fungsi ini menerima nilai inputan ke dalam parameter input.
Di dalam fungsi hitungFactorial(), terdapat kondisi if untuk memeriksa apakah parameter input bernilai lebih dari 1 atau tidak. Jika iya, jalankan perintah return input * hitungFactorial(input – 1). Inilah yang dimaksud dengan rekursif, dimana fungsi ini memanggil dirinya sendiri.
Jika ternyata kondisi if(input > 1) bernilai false, maka fungsi hitungFactorial() akan mengembalikan angka 1.
Kode Program C Menghitung Faktorial (dengan Fungsi Biasa)
Memahami cara kerja fungsi rekursif memang cukup sulit. Dalam prakteknya, saya pribadi juga sangat jarang menggunakan fungsi rekursif. Lebih baik tulis dalam fungsi biasa saja agar lebih mudah dipahami.
Sebagai alternatif, berikut kode program mencari faktorial menggunakan fungsi biasa (tanpa rekursif):
#include <stdio.h> int hitungFactorial(int input) { int hasil = 1; int i; for(i=1;i<=input;i++) { hasil = hasil * i; } return hasil; } int main(void) { printf("## Program Bahasa C Menghitung Faktorial ## \n"); printf("=========================================== \n\n"); int angka,hasil,i; printf("Input angka: "); scanf("%d",&angka); printf("%d! = %d \n",angka, hitungFactorial(angka)); return 0; }
Di dalam fungsi hitungFactorial(), kali ini cukup memakai perulangan for untuk menghitung faktorial.
Perulangan akan dimulai dari i=1 hingga i<=input. Dalam setiap iterasi, hitung hasil perkalian angka dan simpan ke dalam variabel hasil. Terakhir, variabel hasil inilah yang di-return agar nilainya sampai ke kode program utama.
Itulah kode program membuat fungsi rekursif (dan tanpa rekursif) untuk menghitung faktorial dalam bahasa C. Semoga bisa bermanfaat.