首頁 > 後端開發 > C++ > 主體

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

王林
發布: 2023-09-05 10:01:06
轉載
1046 人瀏覽過

在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
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!