Program Faktorial dengan Perulangan for dan Rekursif C++

Assalamu'alaikum...
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 

Post a Comment for "Program Faktorial dengan Perulangan for dan Rekursif C++"