首頁  >  文章  >  後端開發  >  在C程式中使用遞歸函數的輔助空間?

在C程式中使用遞歸函數的輔助空間?

王林
王林轉載
2023-09-05 10:01:061081瀏覽

在C程式中使用遞歸函數的輔助空間?

這裡我們將看到遞歸函數呼叫如何需要輔助空間。它與普通函數呼叫有何不同?

假設我們有一個如下所示的函數 -

long fact(int n){
   if(n == 0 || n == 1)
      return 1;
   return n * fact(n-1);
}

該函數是遞歸函數。當我們像fact(5)一樣呼叫它時,它將在堆疊內儲存位址,如下所示 -

fact(5) --->
fact(4) --->
fact(3) --->
fact(2) --->
fact(1)

隨著遞歸函數一次又一次地呼叫自身,位址被加入到堆疊中。因此,如果函數被遞歸呼叫 n 次,它將佔用 O(n) 輔助空間。但這並不意味著如果一個普通函數被呼叫 n 次,空間複雜度將為 O(n)。對於普通函數,呼叫時會將位址壓入堆疊。完成後,將從堆疊中彈出地址並進入呼叫者函數。然後再打電話。所以它的複雜度為 O(1)。

以上是在C程式中使用遞歸函數的輔助空間?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:tutorialspoint.com。如有侵權,請聯絡admin@php.cn刪除