1. C++完整程序以及递归的时间复杂度
C++ 完整程序
//main.cpp
#include<iostream>
#include<vector>
using namespace std;
int getSum(vector<int> v){
int res=0;
int n=v.size();
for(int i=0;i<n;i++) res+=v[i];
return res;
}
int main(){
int n;
cin>>n;
vector<int> v(n);
for(int i=0;i<n;i++){
cin>>v[i];
}
cout<<getSum(v)<<endl;
return 0;
}
递归函数的复杂度
对于递归而言:
\[T(n)=\left\{\begin{matrix}
O(1) & n=1\\
kT(\frac{n}{m})+f(n^a) & n>1
\end{matrix}\right.
\]
则
\[T(n) = k^{{log_{m}}^{n}} + \sum_{j=0}^{log_{m}^{n-1}}k^jf(n^a/m^j)=n^{{log_{m}}^{k}} + \sum_{j=0}^{log_{m}^{n-1}}k^jf(n^a/m^j)
\]
最终的T(n)复杂度为:
\[T(n) = max(O(n^{{log_{m}}^{k}}), O(n^a))
\]
如果
\[{log_{m}}^{k}=a, T(n)=O(n^alog(n))
\]