Rekursif sederhananya yaitu fungsi yang memanggil dirinya sendiri.
Bingung kan? Hehe..mending langsung liat contohnya saja deh:
Silahkan dirun kode memalukan ini.. semoga komputer anda tidak mati
void saranghaeyo(){
cout<<"i will love you endlessly";
saranghaeyo();
}
int main(){
saranghaeyo();
return 0;
}
Maksud kode diatas itu kita memanggil fungsi melalui fungsi itu sendiri..
jadi programnya akan terus menampilkan “i will love you endlessly” sampe
se-endless2 nya.. yah tapi itu cuma contoh sederhana.. tidak ada gunanya juga
kita buat program seperti itu.. cuma bikin sakit hati.. hiks..
Oke.. jadi masalah utamanya
bukan pada saranghaeyonya tapi sampai pada
titik apa program rekursif akan berakhir (ending point).. misalkan kalo
ingin membuat billangan faktorial dari angka 5.. hasilnya adalah 5x4x3x2x1 = 120..
intinya angka faktorial itu akan berakhir di angka 1.. nah dari sini kita bisa
tentukan ending pointnya adalah 1.
int faktorial(int n){
if(n==1){
return 1;
}else {
return n*faktorial(n-1);
}
}
kalo komputer bisa ngomong kira2 eksekusinya begini :
Misal kita input kan n=5 :
Sekarang n=5;
Apakah n sama dengan 1 ? tidak.. jadi 5x4! ... 4! hasilnya berapa? Belum tau.. oke cari
lagi
Sekarang n=4
Apakah n sama dengan 1 ?
tidak.. jadi 4x3! ... 3! hasilnya
berapa? Belum tau.. oke cari lagi
Sekarang n = 3
Apakah n sama dengan 1 ?
tidak.. jadi 3x2! ... 2! hasilnya berapa? Belum tau.. oke cari lagi
Sekarang n = 2
Apakah n sama dengan 1 ?
tidak.. jadi 2x1! .. 1! hasilnya berapa? Belum tau.. oke cari lagi
Sekarang n = 1
Apakah n sama dengan 1 ? yep..
okeee sudah ketemu ternyata 1! Adalah
1.. sekarang kita cek memori kita terus selesaikan secara jantan
Kita sudah tau kalo 1! = 1 sekarang lanjut
2!...dimana 1! = 1 jadi 2x1
= 2
3!... dimana 2! =2 jadi 3x2
= 6
4!.. dimana 3! = 6 jadi 4x6
= 24
5!.. dimana 4! = 24 jadi 5x24 = 120
Jadi 5! Adalah 120
Jadi program diekseksusi terus menerus. Dan selama belum memiliki
hasil akan di simpan dalam memori.
Begitu ketemu ending pointnya, nilai ending point tadi langsung diterapkan
berdasarkan informasi yang sudah ada dimemori secara mundur sampe ke awal lagi
sehingga ketemu hasilnya..
Yah begitulah yang saya mengerti dan saya bisa jelaskan..kalo masih
bingung juga coba makan dulu baru baca lagi ..
Tidak ada komentar:
Posting Komentar