Apakah benar untuk mengatakan bahwa di mana pun rekursi digunakan, loop for dapat digunakan?
Ya, karena rekursi di sebagian besar CPU dimodelkan dengan loop dan struktur data tumpukan.
Dan jika rekursi biasanya lebih lambat, apa alasan teknis untuk menggunakannya?
Ini tidak "biasanya lebih lambat": itu rekursi yang diterapkan secara tidak benar yang lebih lambat. Selain itu, kompiler modern pandai mengubah beberapa rekursi menjadi loop bahkan tanpa bertanya.
Dan jika selalu memungkinkan untuk mengubah rekursi menjadi loop for, apakah ada aturan praktis untuk melakukannya?
Tulis program iteratif untuk algoritme yang paling dipahami saat dijelaskan secara berulang; tulis program rekursif untuk algoritme yang paling baik dijelaskan secara rekursif.
Misalnya, mencari pohon biner, menjalankan quicksort, dan ekspresi parsing dalam banyak bahasa pemrograman sering dijelaskan secara rekursif. Ini juga paling baik dikodekan secara rekursif. Di sisi lain, menghitung faktorial dan menghitung angka Fibonacci jauh lebih mudah dijelaskan dalam hal iterasi. Menggunakan rekursi untuk mereka seperti menampar lalat dengan palu godam: itu bukan ide yang baik, bahkan ketika palu godam melakukan pekerjaan yang sangat bagus + .
+ Saya meminjam analogi palu godam dari "Disiplin Pemrograman" Dijkstra.
recursion
vsiteration
?iteration = for loop
Kupikir.