- Back to Home »
- Belajar Bahasa C , Mahir Bahasa C , Materi Bahasa C , Menguasai Bahasa C , Pemrograman Bahasa C »
- Menghitung Faktorial Dengan Bahasa C
Posted by : ClownMan
Saturday, August 1, 2015
Menghitung
Faktorial merupakan contoh favorit yang sering diberikan dalam rangka membahas
fungsi rekursif. Fungsi rekursif adalah suatu fungsi yang memanggil dirinya
sendiri. Jadi di dalam fungsi tersebut terdapat suatu baris program yang
memanggil dirinya sendiri. Perhatikan contoh pada listing 1.
Listing 1. Contoh fungsi rekursif
main()
{
…
…
}
fungsiX()
{
…
…
fungsiX()
…
}
|
Satu hal yang
harus diperhatikan adalah proses rekursi tersebut akan terjadi secara
berulang-ulang, sehingga di dalam fungsi yang bersifat rekursif tersebut harus
diberi suatu kondisi sedemikian rupa yang dapat mengakhiri proses rekursi.
Lalu, apa pula
faktorial itu? Faktorial adalah perkalian suatu bilangan bulat N dengan N-1,
N-2, dan seterusnya hingga 0.
Kalau begitu
hasilnya selalu 0 dong, khan semua bilangan jika dikalikan dengan 0 adalah 0.
Pada faktorial yang terjadi tidaklah demikian, karena ada perjanjian bahwa
nilai faktorial 0 adalah 1, bukan 0.
Suatu faktorial
dilambangkan dengan tanda seru (!) dan mengikuti rumus sebagai berikut:
N! = N x (N-1) x (N-2) x … x 0
Dalam bentuk
lain, rumus di atas bisa dituliskan sebagai berikut:
N! = N x (N-1)!
Nah, program
bahasa C yang digunakan untuk menghitung faktorial diberikan pada listing 2.
Listing 2. Menghitung faktorial
#include <stdio.h>
long int faktorial(int N);
main()
{
long int f;
int n;
clrscr();
printf("Program
Menghitung Faktorial \n \n");
printf("Masukkan
suatu bilangan bulat : ");
scanf("%d",&n);
if (n<0)
{
printf("Bilangan
harus positif!");
} else {
f
= faktorial(n);
printf("Nilai
%d! adalah : %ld", n, f);
}
}
long int faktorial(int N)
{
long int F;
if (N<=1)
{
return(1);
} else {
F
= N * faktorial(N-1);
return(F);
}
}
|
Jika program
tersebut dijalankan, hasilnya adalah sebagai berikut:
Program Menghitung Faktorial
Masukkan suatu bilangan bulat : 5
Nilai 5! adalah : 120
gambar 1
Bandingkan
dengan gambar 1.
Alur program
tersebut adalah sebagai berikut:
- Deklarasi
variabel.
- Input
bilangan yang akan difaktorial.
- Pemeriksaan
kondisi, jika bilangan kurang dari nol, maka muncul peringatan, jika
bilangan lebih besar atau sama dengan nol, maka fungsi faktorial()
dipanggil.
Sementara itu di dalam fungsi faktorial()
sendiri alurnya adalah sebagai berikut:
- Deklarasi
variabel.
- Pemeriksaan
kondisi, jika nilai bilangan kurang dari atau sama dengan 1, maka fungsi
faktorial() akan menghasilkan nilai balik 1, jika nilai bilangan lebih
dari 1, maka dihitung nilai faktorialnya. Perhitungan nilai faktorial
mengikuti rumus N! = N x (N-1)!. Karena itu di dalam fungsi faktorial()
ini dipanggil lagi fungsi faktorial() namun sekarang nilai argumennya
adalah N-1.
Untuk membantu
Anda dalam membayangkan alur tersebut, lihat bagan seperti terlihat pada gambar
2.
gambar 2
Dengan
memanfaatkan program faktorial di atas, kita bisa membuat suatu program lain
yang juga bermanfaat, seperti misalnya program untuk menghitung permutasi dan
kombinasi. Permutasi dan kombinasi merupakan proses perhitungan yang kerap
dilakukan di bidang ilmu statistik. Rumus perhitungan permutasi dan kombinasi
dapat dilihat pada gambar 3.
gambar 3
Huruf P menunjukkan permutasi dan huruf C
menunjukkan kombinasi. Huruf n dan r mewakili bilangan bulat positif dengan n
>= r.
Berdasarkan
rumus tersebut, kita akan membuat program untuk menghitung permutasi dan
kombinasi. Program tersebut diberikan pada listing 3.
Listing 3. Menghitung permutasi dan kombinasi
#include <stdio.h>
long int faktorial(int N);
main()
{
long int hasil;
int n,r;
char proses;
clrscr();
printf("Program Menghitung Permutasi atau Kombinasi
\n");
printf("nPr atau nCr \n \n");
printf("Masukkan nilai n : ");
scanf("%d",&n);
printf("Masukkan nilai r : ");
scanf("%d",&r);
if (n<r) {
printf("Nilai
n tidak boleh lebih kecil dari r");
} else {
printf("Pilih
P (permutasi) atau C (kombinasi) : ");
proses =
getche();
if
(proses=='p' | proses=='P')
{
hasil
= faktorial(n)/faktorial(n-r);
printf("\n
\n");
printf("%dP%d
= %ld",n,r,hasil);
}
else if
(proses=='c' | proses=='C')
{
hasil
= faktorial(n)/(faktorial(r) * faktorial(n-r));
printf("\n
\n");
printf("%dC%d
= %ld",n,r,hasil);
}
else
{
printf("\nAnda
tidak memilih P atau C");
}
}
}
long int faktorial(int N)
{
long int F;
if (N<=1)
{
return(1);
} else {
F
= N * faktorial(N-1);
return(F);
}
}
|
Jika program
tersebut dijalankan, salah satu kemungkinan hasilnya adalah sebagai berikut:
Program Menghitung Permutasi atau Kombinasi
nPr atau nCr
Masukkan nilai n : 5
Masukkan nilai r : 3
Pilih P (permutasi) atau C (kombinasi) : p
5P3 = 60
Bandingkan
dengan gambar 4
gambar 4
Anda bisa
mengembangkan sendiri program di atas, misalnya diberi looping untuk memberi
kesempatan pengguna melakukan perhitungan ulang setelah sebuah perhitungan
selesai dilakukan.
Selamat mencoba.