我是一个新的分析算法,我写了一个不同版本的Fib系列,我不太确定运行时间的最坏情况(假设计算的基本操作是添加)。这是我的代码。
int fib(int n){
int tab[n];
if (n<4){
return n;
}
tab[0]=0;
tab[1]=1;
tab[2]=2;
tab[3]=3;
for(int i = 4; i<=n; ++i){
tab[i] = tab[i-2] + (2*tab[i-4]) + 3;
}
return tab[n];
}
我会说这里最糟糕的情况是W(n)= 2n-4
但是......我真的不知道。我该如何正确分析?