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