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)。

更新日期:20-Aug-2019

300 次瀏覽

開啟您的職業生涯

完成課程,獲取認證

開始
廣告