Java版——遞迴

來源:互聯網
上載者:User

標籤:時間   指標   調用   werror   返回   java   簡單   空間   over   

1.Java堆棧和運行時堆棧是兩個不同的概念:他們有相似點:在處理方法調用中所扮演的角色基本上是相同的,所以儘管儲存的方式不同,卻儲存了進行這項處理的相似資訊。Java解譯器的任務是轉換.class檔案中的資訊位元組碼,這樣運行時堆棧可以接管Java堆棧(其僅僅是一個抽象構造)的工作。

2.每個方法的狀態,包括main()方法,都是全部自動變數的內容、方法的參數以及返回地址(指出了重新返回器調用者的位置)描述的。包含所有這些資訊的資料域在運行時堆棧中,稱為活動記錄或是棧結構。只要其中一個方法在執行,屬於他的活動記錄就存在。這個紀錄是該方法的私人資訊池,是儲存正確執行該方法及返回該方法調用位置的必要資訊倉庫。活動記錄的生存期通常很短,因為她們是在進入方法時動態分配的,並且在方法退出時動態收回的。

  一個活動記錄通常包含以下資訊:

    方法的所有參數的值,首單元地址;

    可以存在別處的局部(自動)變數,活動記錄只包含了它們的描述符和指向其儲存地址的指標;

    返回地址;

    一個動態連結;

    非void類型的方法的傳回值。

3.遞迴:尾遞迴;非尾遞迴;間接遞迴;嵌套遞迴;過分遞迴(邏輯簡單性和可讀性是支援遞迴使用的基礎。遞迴的代價是拖長了已耗用時間並且相對於非遞迴方法,它佔用了更多的運行時堆棧空間,如果遞迴層次太深,那麼運行會導致堆疊溢位並且程式會不正常結束,產生一個不可恢複的錯誤stackOverflowError)。

4.回溯

Java版——遞迴

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.