Rekursi - seperti yang kita semua tahu - adalah salah satu masalah itu - yang membungkus kepala Anda terasa seperti mencapai "tonggak" dalam perjalanan pemrograman Anda.
Tetapi ketika benar-benar menggunakannya dalam masalah dunia nyata - mengetahui mekanisme rekursi TIDAK cukup - kita juga harus memahami sifat masalah di mana rekursi adalah solusi yang paling cocok.
Jadi pertanyaan saya adalah ini ...
- apa "pola masalah" yang membutuhkan solusi rekursi
- adalah rekursi bentuk strategi "divide & conquer" atau bentuk "code reuse" - atau, adalah pola desain dengan haknya sendiri
- dapatkah Anda memberi kami contoh masalah dunia nyata di mana rekursi datang ke pikiran sebagai solusi langsung
- PEMBARUAN -
banyak jawaban mengacu pada "masalah nyata" sebagai melintasi pohon, faktorial, dll. Saya lebih suka "masalah nyata NYATA" - izinkan saya memberi Anda sebuah contoh ...
Kami memiliki potongan teks BESAR (sekitar 30 MB teks sebagai daftar tertaut structs
), dan kami perlu membuat indeksnya untuk pencarian teks lengkap. Kami perlu menyimpan seluruh indeks dalam memori dan mengindeks ulang teks setiap 10 menit.
Setiap 10 menit kami membandingkan seluruh teks (dua daftar yang ditautkan, baris demi baris) dengan potongan teks yang baru dibuat - untuk melihat baris mana yang diubah - dan kemudian kami akan mengindeks ulang hanya baris itu - dengan cara itu kami dapat menghindari pengindeksan ulang teks SELURUH. Ingat - kami perlu menemukan titik perbedaan antara dua daftar yang terhubung 30 MB.
Salah satu kolega saya datang dengan program fantastis yang menggunakan rekursi HEAVY untuk membandingkan garis - dan kemudian mengumpulkan posisi di mana chuck berbeda dalam array - ya saya tahu itu terdengar membingungkan - bagaimana rekursi dapat membantu di sini - tetapi itu benar.
Intinya adalah - bagaimana dia bisa melihat bahwa masalah ini dapat diselesaikan dengan cerdas dengan menggunakan rekursi yang berat?