Program Deret Ganjil Genap menggunakan Fungsi Rekursif C++ - Belajar Bareng

Assalamu'alaikum...

Setelah belajar mengenai contoh-contoh program yang menggunakan fungsi rekursif yaitu dan . 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

Posting Komentar

Lebih baru Lebih lama