Sesuai permintaan OP, saya akan ikut serta (tanpa membodohi diri sendiri, semoga: P)
Saya pikir kita semua sepakat bahwa rekursi hanyalah cara pengkodean yang lebih elegan. Jika dilakukan dengan baik dapat membuat kode lebih mudah dikelola, yang merupakan IMHO sama pentingnya (jika tidak lebih) yang mengurangi 0,0001ms.
Sejauh argumen bahwa JS tidak melakukan optimasi Tail-call: itu tidak sepenuhnya benar lagi, menggunakan mode ketat ECMA5 memungkinkan TCO. Itu adalah sesuatu yang saya tidak terlalu senang tentang beberapa waktu yang lalu, tapi setidaknya sekarang saya tahu mengapa arguments.callee
melempar kesalahan dalam mode ketat. Saya tahu tautan di atas tautan ke laporan bug, tetapi bug tersebut diatur ke WONTFIX. Selain itu, TCO standar akan datang: ECMA6 (Desember 2013).
Secara naluriah, dan berpegang pada sifat fungsional JS, saya akan mengatakan bahwa rekursi adalah gaya pengkodean yang lebih efisien 99,99% dari waktu. Namun, Florian Margaine ada benarnya ketika dia mengatakan bahwa kemacetan kemungkinan akan ditemukan di tempat lain. Jika Anda memanipulasi DOM, Anda mungkin lebih baik memfokuskan pada penulisan kode Anda sebisa mungkin dipertahankan. API DOM adalah apa adanya: lambat.
Saya pikir hampir tidak mungkin untuk menawarkan jawaban yang pasti sebagai pilihan yang lebih cepat. Akhir-akhir ini, banyak jspref yang saya lihat menunjukkan bahwa mesin V8 Chrome sangat cepat di beberapa tugas, yang berjalan 4x lebih lambat pada SpiderMonkey FF dan sebaliknya. Mesin JS modern memiliki segala macam trik untuk mengoptimalkan kode Anda. Saya bukan ahli, tapi saya merasa bahwa V8, misalnya, sangat dioptimalkan untuk penutupan (dan rekursi), sedangkan mesin MS's JScript tidak. SpiderMonkey sering berkinerja lebih baik ketika DOM terlibat ...
Singkatnya: Saya akan mengatakan teknik mana yang akan lebih performant, seperti biasa di JS, hampir mustahil untuk diprediksi.