Kadang-kadang dalam wawancara, saya dapat menggunakan rekursi untuk menyelesaikan masalah (seperti menambahkan 1
ke integer presisi tak terbatas), atau ketika masalah muncul dengan sendirinya cocok untuk menggunakan rekursi. Terkadang, itu mungkin hanya karena menggunakan rekursi banyak untuk pemecahan masalah, jadi tanpa banyak berpikir, rekursi digunakan untuk menyelesaikan masalah.
Namun, apa pertimbangannya sebelum Anda bisa memutuskan apakah cocok untuk menggunakan rekursi untuk menyelesaikan masalah?
Beberapa pemikiran yang saya miliki:
Jika kita menggunakan rekursi pada data yang dibelah dua setiap kali, sepertinya tidak ada masalah menggunakan rekursi, karena semua data yang dapat masuk ke dalam 16GB RAM, atau bahkan hard drive 8TB, dapat ditangani dengan rekursi hanya sedalam 42 level. (jadi tidak ada stack overflow (saya pikir di beberapa lingkungan, stack bisa mencapai level 4000, lebih dari 42, tetapi pada saat yang sama, itu juga tergantung pada berapa banyak variabel lokal yang Anda miliki, karena setiap panggilan stack, menempati lebih banyak memori) jika ada banyak variabel lokal, dan itu adalah ukuran memori, bukan level, yang menentukan stack overflow)).
Jika Anda menghitung angka Fibonacci menggunakan rekursi murni, Anda benar-benar harus khawatir tentang kerumitan waktu, kecuali jika Anda menyimpan hasil antara.
Dan bagaimana kalau menambahkan 1
ke integer presisi tak terbatas? Mungkin masih bisa diperdebatkan, karena, apakah Anda akan bekerja dengan angka yang panjangnya 3000 digit atau 4000 digit, begitu besar sehingga bisa menyebabkan stack overflow? Saya tidak memikirkannya, tapi mungkin jawabannya tidak, kita tidak boleh menggunakan rekursi, tapi gunakan saja perulangan, karena bagaimana jika dalam beberapa aplikasi, angkanya harus panjang 4.000 digit, untuk memeriksa beberapa properti nomor, seperti apakah nomornya prima atau tidak.
Pertanyaan pamungkasnya adalah: apa pertimbangannya sebelum Anda dapat memutuskan untuk menggunakan rekursi untuk menyelesaikan masalah?
1
ke integer presisi tak terbatas? Anda bisa mengatakan, ya, mereka mengecil menjadi masalah yang lebih kecil, tetapi rekursi murni tidak cocok untuk itu