tail-call

    1熱度

    2回答

    我正在讀關於Clojure中,發現了一個關於Java不支持尾調用,在當前版本的討論,那人被拋出異常模擬尾調用的JVM,反正這聽起來像人們正在做一些瘋狂的東西在那裏。所以這讓我想知道C#的尾巴呼叫,同樣的問題?在某些情況下,而不是其他

    2熱度

    1回答

    我已經瀏覽了lua-users Sleep Function以努力找到一個非繁忙的等待睡眠問題的解決方案,我對他們中的任何人都不滿意。儘管如此,我試圖用幾個在使用尾調用的函數的末尾提供延遲。 通常我不會使用尾部呼叫,但由於lua沒有爲尾部呼叫留下堆棧,所以適合我。 不幸的是,我看到我的處理器峯值約20%的使用,並且程序一旦開始就沒有任何輸出沖洗,就立即無響應。 問題(簡體)看起來是這樣的: fun

    0熱度

    2回答

    如何在自定義虛擬機中實現尾部呼叫? 我知道我需要彈出原始函數的本地堆棧,然後它是參數,然後推入新的參數。但是,如果我彈出函數的本地堆棧,我該如何推動新的參數?他們剛剛從堆棧中彈出。

    5熱度

    1回答

    我看到有幾個關於C#中尾部調用優化的問題,認爲這會使語言不適合實現遞歸算法。然而,這引出了一個問題,我們如何才能進行尾調用優化,並且在引發異常時或者可以使用反射來檢查調用堆棧並對其執行操作時仍提供明智的堆棧跟蹤。

    4熱度

    2回答

    我想知道標準的Arduino環境是否支持尾部呼叫消除... 有沒有人知道它的一些事情?

    13熱度

    4回答

    有時它很簡單(如果自我調用是最後一個語句,它是尾遞歸),但仍有一些情況令我困惑。一位教授告訴我,「如果在自助之後沒有執行的指令,那就是尾遞歸」。這些例子如何(忽略它們沒有多大意義的事實): a)這一個應該是尾遞歸的,看看自我調用是最後一個語句,並且在它之後沒有什麼可以執行的。 function foo(n) { if(n == 0) return 0; else

    3熱度

    3回答

    根據該問題的答案: Which, if any, C++ compilers do tail-recursion optimization? 看來,編譯器應該做尾遞歸優化。 但我已經嘗試過提出的選項,似乎編譯器不能在模板功能的情況下做這種優化。它可以以某種方式修復嗎?

    3熱度

    2回答

    背景:我爲一個學校項目編寫了一個.NET編譯器(非常類似於C#)。我目前試圖添加的功能之一是在方法內調用遞歸。 更多信息:在CIL中,「this」被傳遞給實例方法,就好像它只是另一個參數。因此,訪問靜態方法的第一個參數時,您將發出ldarg.0,但訪問實例方法的第一個參數,則會發出ldarg.1,並在實例方法中訪問「this」,您將發出ldarg.0 。 (實例方法與我想象中的擴展方法更相似。)

    2熱度

    2回答

    一旦編譯並運行,它會表現爲尾部調用? let rec f accu = function | [] -> accu | h::t -> (h + accu) |> f <| t 也許有一種簡單的方法來測試我不知道的行爲,但這可能是另一個問題。