Rekursi secara intrinsik tidak lebih baik atau lebih buruk daripada loop - masing-masing memiliki kelebihan dan kekurangan, dan mereka bahkan tergantung pada bahasa pemrograman (dan implementasi).
Secara teknis, loop berulang sesuai dengan sistem komputer tipikal yang lebih baik pada tingkat perangkat keras: pada tingkat kode mesin, satu lingkaran hanyalah sebuah tes dan lompatan bersyarat, sedangkan rekursi (diimplementasikan secara naif) melibatkan mendorong bingkai tumpukan, melompat, kembali, dan muncul kembali dari tumpukan. OTOH, banyak kasus rekursi (terutama yang sepele setara dengan loop berulang) dapat ditulis sehingga stack push / pop dapat dihindari; ini dimungkinkan ketika pemanggilan fungsi rekursif adalah hal terakhir yang terjadi dalam fungsi body sebelum kembali, dan itu umumnya dikenal sebagai pengoptimalan panggilan ekor (atau pengoptimalan pengulangan ekor ). Fungsi rekursif yang dioptimalkan tail-call-dioptimalkan sebagian besar setara dengan loop berulang pada tingkat kode mesin.
Pertimbangan lain adalah bahwa loop berulang membutuhkan pembaruan keadaan destruktif, yang membuatnya tidak kompatibel dengan semantik bahasa murni (efek samping). Ini adalah alasan mengapa bahasa murni seperti Haskell tidak memiliki konstruksi loop sama sekali, dan banyak bahasa pemrograman fungsional lainnya tidak memiliki mereka sepenuhnya atau menghindarinya sebanyak mungkin.
Alasan mengapa pertanyaan-pertanyaan ini muncul begitu banyak dalam wawancara, adalah karena untuk menjawabnya, Anda memerlukan pemahaman menyeluruh tentang banyak konsep pemrograman vital - variabel, pemanggilan fungsi, cakupan, dan tentu saja loop dan rekursi -, dan Anda memiliki untuk membawa fleksibilitas mental ke meja yang memungkinkan Anda untuk mendekati masalah dari dua sudut yang sangat berbeda, dan bergerak di antara berbagai manifestasi dari konsep yang sama.
Pengalaman dan penelitian menunjukkan bahwa ada garis antara orang yang memiliki kemampuan untuk memahami variabel, petunjuk, dan rekursi, dan mereka yang tidak. Hampir semua hal lain dalam pemrograman, termasuk kerangka kerja, API, bahasa pemrograman, dan kasus tepi mereka, dapat diperoleh melalui pembelajaran dan pengalaman, tetapi jika Anda tidak dapat mengembangkan intuisi untuk ketiga konsep inti ini, Anda tidak layak menjadi seorang programmer. Menerjemahkan loop berulang sederhana ke versi rekursif adalah tentang cara tercepat yang mungkin untuk menyaring non-programmer - bahkan seorang programmer yang agak tidak berpengalaman biasanya dapat melakukannya dalam 15 menit, dan ini merupakan masalah agnostik bahasa yang sangat, sehingga kandidat dapat memilih bahasa pilihan mereka alih-alih tersandung keanehan.
Jika Anda mendapatkan pertanyaan seperti ini dalam sebuah wawancara, itu pertanda baik: itu artinya calon majikan mencari orang yang bisa memprogram, bukan orang yang hafal manual alat pemrograman.