Bismillah, setelah mempelajari mengenai rekursif dan contoh program konversi desimal ke biner kali ini akan melanjutkan mengenai contoh program faktorial secara rekursif.
Faktorial (!) dari bilangan asli x adalah hasil perkalian antara bilangan bulat positif yang kurang dari atau sama dengan x.
contoh :
1! = 1*1 = 1
2! = 1*2 = 2
3! = 1*2*3 = 6
4! = 1*2*3*4 = 24
5! = 1*2*3*4*5 = 120
6! = 1*2*3*4*5*6 = 720
dst...
Jika menggunakan perulangan biasa, dapat dilihat programnya seperti ini :
#include<iostream>
using namespace std;
void faktorialPerulangan(int bil){
int hasil=1;
for (int i = 1; i <= bil; i++)
{
hasil *= i;
cout<<i;
if (i != bil)
{
cout<<'*';
}
}
cout<<'='<<hasil;
}
int main(){
int bil,hasil=1;
cout<<"Faktorial dengan perulangan for"
<<endl;
cout<<"Masukan bilangan : ";cin>>bil;
cout<<bil<<"! = ";
faktorialPerulangan(bil);
}
bandingkan dengan menggunakan rekursif berikut ini :
#include<iostream>
using namespace std;
int faktorial(int bil,int hasil){
if(bil == 0){
//pemberhentian rekursif
cout<<'=';
return hasil;
}
else{
hasil*=bil;
cout<<bil;
if(bil != 1)
cout<<'*';
//melakukan rekursif
faktorial(bil-1,hasil);
}
}
int main(){
int bil,hasil=1;
cout<<"Faktorial dengan rekursif"<<endl;
cout<<"Masukan bilangan : ";cin>>bil;
cout<<bil<<"! = ";
cout<<faktorial(bil,hasil);
}
Hasil output kedua program diatas :
Faktorial menggunakan perulangan for |
Faktorial menggunakan fungsi rekursif |
Kedua program menghasilkan nilai faktorial yang sama, namun susunan bilangannya yang berbeda. Untuk program pertama hanya menggunakan perulanga for (loop for) seperti biasa, sedangkan program kedua menggunakan fungsi rekursif. Parameter yang dilempar kepada kedua fungsi pun berbeda.
Berikut alur program faktorial menggunakan for :
bil= 5
// cout<<bil<<"! = ";
5! =
//faktorialPerulangan(bil);
faktorialPerulangan(5)
hasil = 1
iterasi 1 : i= 1
hasil = hasil * i = 1*1 =1
// cout<<i;
5! = 1
// if (i != bil) cout<<'*';
5! = 1*
iterasi 2 : i= 2
hasil = hasil * i = 1*2 =2
// cout<<i;
5! = 1*2
// if (i != bil) cout<<'*';
5! = 1*2*
iterasi 3 : i= 3
hasil = hasil * i = 2*3 =6
// cout<<i;
5! = 1*2*3
// if (i != bil) cout<<'*';
5! = 1*2*3*
iterasi 4 : i= 4
hasil = hasil * i = 6*4 =24
// cout<<i;
5! = 1*2*3*4
// if (i != bil) cout<<'*';
5! = 1*2*3*4*
iterasi 5 : i= 5
hasil = hasil * i = 24*5 =120
// cout<<i;
5! = 1*2*3*4*5
// if (i != bil) cout<<'*';
// i sudah sma dengan bil
5! = 1**2*3*4*5
iterasi selesai
// cout<<'='<<hasil;
5! = 1**2*3*4*5 = 120
Berikut alur program faktorial menggunakan rekursif :
bil = 5;
hasil =1;
//output cout<<bil<<"! = ";
5! =
// cout<<faktorial(bil,hasil);
faktorial(5,1)
menjalankan else
hasil = 1*5 = 5
//output cout<<bil;
5! = 5
// if(bil != 1) cout<<'*';
5! = 5*
// faktorial(bil-1,hasil);
faktorial (4,5)
menjalankan else
hasil = 5*4 = 20
// cout<<bil;
5! = 5*4
// if(bil != 1) cout<<'*';
5! = 5*4*
// faktorial(bil-1,hasil);
faktorial (3,20)
menjalankan else
hasil = 20*3 = 60
// cout<<bil;
5! = 5*4*3
// if(bil != 1) cout<<'*';
5! = 5*4*3*
// faktorial(bil-1,hasil);
faktorial (2,60)
menjalankan else
hasil = 60*2 = 120
// cout<<bil;
5! = 5*4*3*2
// if(bil != 1) cout<<'*';
5! = 5*4*3*2*
// faktorial(bil-1,hasil);
faktorial (1,120)
menjalankan else
hasil = 120*1 = 120
// cout<<bil;
5! = 5*4*3*2*1
// if(bil != 1) cout<<'*';
5! = 5*4*3*2*1
// faktorial(bil-1,hasil);
faktorial (0,120)
menjalankan if
// cout<<'=';
5! = 5*4*3*2*1=
// return hasil;
5! = 5*4*3*2*1=120
Nah begitulah kira2 kurang lebih alur dari kedua program faktorial diatas.
Bagaimana sudah paham ?
Semoga bermanfaat. Terimakasih
No comments:
Post a Comment
Komentar yang bermutu Insyaallah akan mendapatkan berkah