- 1.空間復雜度
- 計算方法
- 2.時間復雜度
- 計算方法
- 非遞歸
- 遞歸情況遞歸總次數*每次遞歸次數
- 計算方法
1.空間復雜度
- 空間復雜度是指 執行這個算法所需要的內存空間。
- 空間復雜度是函數中創建對象的個數關于問題規模函數表達式,一般情況下用O漸進表示法表示
計算方法
1.忽略常數,用O(1)表示
2.遞歸算法的空間復雜度=遞歸深度*每次遞歸所要的輔助空間
3.對于單線程來說,遞歸有運行時堆棧,求的是遞歸最深的那一次壓棧所耗費的空間的個數,因為遞歸最深的那一次所耗費空間足以容納它所有遞歸過程。遞歸是要返回上一層的,所以它所需要的空間不是一直累加起來的。
2.時間復雜度
- 時間復雜度是指 執行這個算法所需要的計算工作量。
計算方法
1.用常數1取代運行時間中的所有加法常數
2.在修改后的運行次數函數中,只保留最高階項
3.如果最高階項系數存在且不是1,則去除與這個項相乘的常數
非遞歸
void Test(int n)
{int iCount = 0;for (int iIdx = 0; iIdx < 10; ++iIdx){iCount++;}
}//執行總次數:f(n)=10 + 1
//則O(n)=O(1)
遞歸情況遞歸總次數*每次遞歸次數
int Jie_Cheng(int n)
{if (n < 2)return 1;elseint i = n;int tmp = Jie_Cheng(n - 1);return n * tmp;
}
//每次遞歸次數:2
//遞歸總次數:n
//2*n 所以O(n)=O(n)