Rabu, 01 April 2015

Membuat Program Rekursif Dengan C++


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