Program Deret Ganjil Genap menggunakan Fungsi Rekursif C++

Assalamu'alaikum...

Setelah belajar mengenai contoh-contoh program yang menggunakan fungsi rekursif yaitu Konversi Desimal ke Biner dan Faktorial. Sekarang akan dibahas mengenai Menjumlahkan Deret Ganjil dan Genap dengan Fungsi Rekursif C++.

Contoh :

kasus 1 :
Bilangan awal : 1
Bilangan akhir : 10

Deret Genap
2 + 4 + 6 + 8 +10 =30

Deret Ganjil
1 + 3 + 5 + 7 + 9 = 25

kasus 2 :
Bilangan awal : 1
Bilangan akhir : 8

Deret Genap
2 + 4 + 6 + 8 = 20

Deret Ganjil
1 + 3 + 5 + 7 = 16

Berikut program C++ :

#include<iostream>
using namespace std;
int ganjilGenapRekursif(char kode,int awal,int akhir){

        if (awal>akhir){
            return 0;
        }else{    
            if (kode=='-'){
                if (awal%2==0){
                awal+=1;
                } 
            }else{
                if (awal%2==1){
                awal+=1;
                }
            }
            cout<<awal;
            if (awal<akhir){
                cout<<" + ";
            }else{
                cout<<" = ";
            }
            return awal + ganjilGenapRekursif(kode,awal+2,akhir);
        }    
    
}
int main(){
    int awalBilangan,akhirBilangan;
    char pilih;
    cout<<"Input bilangan awal : ";
    cin>>awalBilangan;
    cout<<"Input bilangan akhir : ";
    cin>>akhirBilangan;
    cout<<"[-] Deret Ganjil\n"
        <<"[+] Deret Genap\n"
        <<"Pilihan [- / +] : ";
        cin>>pilih;
    switch (pilih)
    {
    case '-':
        cout<<"Deret Ganjil : "<<endl;
        cout<<ganjilGenapRekursif(pilih,awalBilangan,akhirBilangan);
        break;
    case '+':
        cout<<"Deret Genap : "<<endl;
        cout<<ganjilGenapRekursif(pilih,awalBilangan,akhirBilangan);
        break;
    default:
        break;
    }
}

Hasil output :

Output Deret Ganjil

Output Deret Genap
 
Note :
bagian pentingnya ada pada statement yang menjadikan fungsi tersebut rekursif yaitu :

if (awal>akhir)
    return 0;
else
    return awal + ganjilGenapRekursif(kode,awal+2,akhir);

mari kita jabarkan :

kode = '-'
awal = 1
akhir = 10

ganjilGenapRekursif('-',1,10) 
awal < akhir (1<10) maka masuk ke else 
return 1 + ganjilGenapRekursif('-',1+2,10)

ganjilGenapRekursif('-',1+2,10)
awal < akhir (3<10) maka masuk ke else
return 3 + ganjilGenapRekursif('-',3+2,10)

ganjilGenapRekursif('-',3+2,10)
awal < akhir (5<10) maka masuk ke else
return 5 + ganjilGenapRekursif('-',5+2,10)

ganjilGenapRekursif('-',5+2,10)
awal < akhir (7<10) maka masuk ke else
return 7 + ganjilGenapRekursif('-',7+2,10)

ganjilGenapRekursif('-',7+2,10)
awal < akhir (9<10) maka masuk ke else
return 9 + ganjilGenapRekursif('-',9+2,10)

ganjilGenapRekursif('-',9+2,10)
awal > akhir (11>10) maka masuk ke if
return 0

Hasil :

ganjilGenapRekursif('-',9+2,10) memiliki nilai 0 karen return 0
ganjilGenapRekursif('-',7+2,10) memiiliki nilai 9 + ganjilGenapRekursif('-',9+2,10) = 9 + 0 = 9
ganjilGenapRekursif('-',5+2,10) memiliki nilai 7 + ganjilGenapRekursif('-',7+2,10) = 7 + 9 = 16
ganjilGenapRekursif('-',3+2,10) memiliki nilai 5 + ganjilGenapRekursif('-',5+2,10) = 5 + 16 = 21
ganjilGenapRekursif('-',1+2,10) memiliki nilai 3 + ganjilGenapRekursif('-',3+2,10) = 3 + 21 = 24
ganjilGenapRekursif('-',1,10) memiliki nilai 1 + ganjilGenapRekursif('-',1+2,10) = 1 + 24 = 25

.'. sehingga hasil yang dikembalikan oleh fungsi adalah 25

Bagaimana tidak susah bukan ?

Semoga bermanfaat. Terimakasih

Post a Comment for "Program Deret Ganjil Genap menggunakan Fungsi Rekursif C++"