首先要明確一個概念,變量的內存分配發生在定義的時候
忽略常數,用O(1)表示
遞歸算法的空間復雜度=遞歸深度N*每次遞歸所要的輔助空間
對於單線程來說,遞歸有運行時堆棧,求的是遞歸最深的那一次壓棧所耗費的空間的個數,因為遞歸最深的那一次所耗費的空間足以容納它所有遞歸過程。
a = 0
b = 0
print(a,b)
它的空間復雜度O(n)=O(1);
def fun(n):
k = 10
if n == k:
return n
else:
return fun(++n)
遞歸實現,調用fun函數,每次都創建1個變量k。調用n次,空間復雜度O(n*1)=O(n)。
for(i=0;i<n;++):
temp = i
變量的內存分配發生在定義的時候,因為temp的定義是循環里邊,所以是n*O(1)
temp=0;
for(i=0;i<n;i++):
temp = i
temp定義在循環外邊,所以是1*O(1)
---------------------
作者:qq_17534301
來源:CSDN
原文:https://blog.csdn.net/qq_17534301/article/details/82872357
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!
