這裡我們將看到遞歸函數呼叫如何需要輔助空間。它與普通函數呼叫有何不同?
假設我們有一個如下所示的函數 -
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中文網其他相關文章!