簡體   English   中英

沒有尾調用優化的尾遞歸

[英]Tail recursion without tail call optimization

假設我們有兩個版本的遞歸 function,其中一個是尾遞歸的。 如果使用的語言沒有尾調用優化,那么使用 function 尾遞歸有什么好處? 據我了解,如果沒有優化,function(尾部和非尾部)的每個版本都將使用相同數量的堆棧幀(在大多數情況下)。

我知道在某些情況下,例如 Fibonacci function,即使沒有尾調用優化,使用尾調用也會更有效,因為它避免了雙重調用。 但是,如果 function 的兩個版本都沒有進行雙重調用怎么辦? 尾遞歸 function 還會更有效嗎?

該問題的答案取決於硬件和語言實現。 然而,在大多數情況下,我不得不認為簡單的GOTOCALL - RETURN指令對更快。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM