Rekursif

Pada buku ini kita akan membahas fungsi rekursif dari mulai tingkat pemula sampai dengan ahli. Saya berusaha membawakan materi ini dengan mengutamakan banyak nya contoh dan latihan. Karena tidak ada jalan pintas untuk menguasai teknik ini. Hanya kerja keras dan keteguhan hati yang bisa menentukan keberhasilan anda menguasai nya.
Saya akan memulai dengan penjelasan Rekursif sederhana. Dimana Hal ini adalah fondasi dari segala kompleksitas yang akan anda pelajari di level lanjutan. Kita juga akan memberikan banyak latihan dari situs online judge. Contoh yang diberikan pada level ini adalah perhitungan faktorial dengan rekusif. Contoh ini sederhana dan linear.
Data Struktur juga ada yang memiliki sifat rekursif, seperti linked list dan tree. Hal ini natural diproses dengan rekursif.
Setelah anda menguasai dasar maka kita akan melihat bahwa rekursif tersebut tidak hanya terbatas pada pemanggilan linear saja tetapi juga percabangan. Contoh yang akan dibawakan adalah Fibonacci dan Tower Of Hanoi. Untuk fibonnaci kita akan bahas lebih lanjut pada topik ke depan nya.
Rekursif juga dapat digunakan untuk pengambilan banyak keputusan yang berhubungan. Anda akan belajar mengenai recursive backtracking dimana metode ini dapat digunakan untuk melakukan pencarian solusi dan enumerasi seluruh solusi yang ada. Kita akan membahas mengenai permutasi, kombinasi dan subset. Pada level ini anda juga akan diperkenalkan dengan penelurusan maze ( maze traversal ) dan juga tutorial mengenai Knapsack untuk menghitung banyak cara dan juga optimasi.
Perjalanan kita tidak berhenti sampai sini saja, kita akan memperkenalkan struktur permasalahan yang saling overlapping atau ber irisan. Kita dapat melakukan optimasi dengan menggunakan cache atau memoization sehingga kita tidak perlu melakukan pemanggilan yang tidak diperlukan. Kita akan kembali membahas mengenai Fibonnaci dan cara optimasinya. Kita juga akan mengubah nya menjadi fungsi yang iterative. Karena setiap program rekursif dapat di ubah menjadi program iterative.
Setelah kita paham benar maka kita akan melakukan optimasi program rekursif dengan memoization untuk masalah Coin Change dan Knapsack. Hal ini akan memberikan contoh yang baik dan memberikan dasar yang baik untuk mendaki ke level berikutnya yaitu Dynamic Programming.
Sebelumnya kita sudah membahas dynamic programming secara top down dengan recursive. Maka sekarang kita akan mengubah program rekursif tersebut menjadi iterative. Kita juga akan memperkenalkan optimal substucture dari solusi yang besar. Kita memecah-mecahnya menjadi solusi optimal yang kecil kecil dan begerak dari sana.
Pada saat ini anda sudah memiliki pemahaman yang cukup. Sisanya hanyalah dibutuhkan latihan, latihan dan latihan. Anda jangan menyerah untuk menemukan bentuk rekursif. Memang tidak gampang tetapi semakin sering anda berlatih menyelesaikan soal maka anda akan keluar sebagai pemenang.
Mari kita akhiri pendahuluan ini sampai disini dan kita langsung masuk ke materi intinya.
Go Get Golds !