回覆列表
  • 1 # 散居獵人

    遞迴函式在記憶體就是一段可重入程式碼。呼叫多少次都是同一段程式碼。

    在機器指令或組合語言裡,沒有遞迴函式的概念,因為一段程式碼的入口地址是可以隨時jmp到的,也就是可重入的,滿足進棧出棧規則就成為可重複呼叫的模組。

    高階語言要求先定義後呼叫。但遞迴函式是個特例,定義裡有呼叫,直接遞迴或間接遞迴。

  • 2 # 霹靂263521714453

    遞迴是數學概念 計算機遞迴是透過函式呼叫自己實現的。 所以看你想問什麼 你那麼理解是站在計算機物理性質上對遞迴的實現演算法角度上說的 所以其實不是錯的

  • 3 # 和不同

    程式碼僅一份

    首先,遞迴函式的程式碼在記憶體中只需有一份,通常也只有一份。

    其次,這樣的理解僅和程式語言的實現、及計算機體系結構有關,和遞迴無關。

    資料有多份

    以C為例,函式的實現程式碼通常存放在 TEXT 段中,而該函式的每一次呼叫都會在堆疊段生成一套新的段框架(Stack Frame),段框架中儲存著本次呼叫的上下文、區域性變數等資訊,這一資料在函式返回時釋放。

    若遞迴深度過大,堆疊空間不足以存放這許多次呼叫生成的資料,就容易出現堆疊溢位故障。

    小結一下:

    遞迴呼叫時:函式的程式碼在記憶體中只需一份;而函式執行時的動態資料,可能有很多份。

  • 中秋節和大豐收的關聯?
  • 和一個男的聊的很好,每天他都會找我,但有天突然他不找我了,我該不該找他?