[英]Tail recursion without tail call optimization
假設我們有兩個版本的遞歸 function,其中一個是尾遞歸的。 如果使用的語言沒有尾調用優化,那么使用 function 尾遞歸有什么好處? 據我了解,如果沒有優化,function(尾部和非尾部)的每個版本都將使用相同數量的堆棧幀(在大多數情況下)。
我知道在某些情況下,例如 Fibonacci function,即使沒有尾調用優化,使用尾調用也會更有效,因為它避免了雙重調用。 但是,如果 function 的兩個版本都沒有進行雙重調用怎么辦? 尾遞歸 function 還會更有效嗎?
該問題的答案取決於硬件和語言實現。 然而,在大多數情況下,我不得不認為簡單的GOTO
比CALL
- RETURN
指令對更快。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.