Rekursi seringkali merupakan cara yang lebih alami dalam memandang berbagai hal daripada iterasi. Sebagai contoh, pertimbangkan inorder traversal dari pohon biner: inorder(left); process(); inorder(right);
jauh lebih sederhana daripada mempertahankan stack secara eksplisit.
Selama Anda tidak terlalu dalam (meniup tumpukan), perbedaan dalam penggunaan sumber daya biasanya sepele. Jangan khawatir tentang hal itu secara umum. Kode sederhana biasanya lebih baik daripada kode yang dioptimalkan dengan tangan, meskipun ada pengecualian. Kanan biasanya lebih baik daripada cepat.
Algoritma rekursif apa pun dapat dinyatakan sebagai algoritme berulang, tetapi Anda mungkin perlu menyimpan tumpukan eksplisit (sesuai dengan tumpukan panggilan yang ditangani secara implisit). Lagi pula, jika Anda mengompilasi fungsi rekursif, Anda mendapatkan sesuatu yang bergantung pada memanipulasi tumpukan dan perulangan melalui fungsi, dan itu berulang.
Fungsi tail-recursive dapat dengan mudah diterjemahkan ke dalam loop, dan tidak perlu tumpukan, tapi itu kasus khusus.