計算理論的重大突破,無限深度遞迴,重大突破遞迴

來源:互聯網
上載者:User

計算理論的重大突破,無限深度遞迴,重大突破遞迴

目前無論是Lisp還是Javascript(C++就更不用說了),遞迴深度都遠遠低於可用記憶體大小,而且棧一旦分配就無法挪動(有指標似乎無解),這個問題的根源在於call指令會把下一指令的地址入棧。我經過幾年的思考終於發現,可以把C++的記憶體模型完全放在堆上,也就是說進行call之前先new出調用函數所需要的空間,而把返回地址作為參數傳遞進去。這樣就從根源上解決了此問題,那什麼尾遞迴就是個渣,完全沒有通用性。還有個好處就是程式長時間運行可以合并大量零碎記憶體。


比較有意思的評論:


call 需要調用 new,new 本身就是個函數調用,那邏輯上豈不是無限遞迴了。


還有有幾個腦殘Lisp會顯式限制遞迴深度的。yinwang都噗了幾遍“棧”了你咋還不長進。R.K.Dybvig反倒是前在一篇dissertation指出在他之前Scheme實現還都沒直接用你所謂的棧的。



解釋下二叉樹遞迴深度問題

這個演算法的意思是,當前樹的深度等於其左子樹和右子樹中較深的那一個的深度再加1
例如:您提供的圖A的左子樹深度為3,右子樹的深度為3,此時A這棵樹的深度就為4
再來考慮D和G,此時D的左子樹深度為0,右子樹深度為0,所以返回0+1 = 1
同理G也返回1
因此C和F返回2,而B和E返回3,最終A返回4

 
什是遞迴深度

應該是遞迴次數,自己調用自己多少次。按你給的例子,如果k是全域變數,可以統計遞迴次數
 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.