Adityads Blogs
21:13
0
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 :
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