为n。
计算此函数的时间复杂度是多少int rec(int n)
{
if (n<=1) {
return n ;
}
int i;
int sum=0;
for (i=1; i<n; i++) {
sum=sum+rec(i);
}
return sum ;
}
答案 0 :(得分:9)
好吧,让我们解决这个问题
(1) f(n) = f(n-1) + f(n-2) + ... f(1) + 1
然而,
(2) f(n-1) = f(n-2) + ... f(1) + 1
所以将(2)插入(1)给出
(3) f(n) = f(n-1) + f(n-1) = 2 f(n-1)
和f(2)= 1,所以这显然是2 n (详情:Can not figure out complexity of this recurrence)。好吧,实际上2 n-1 但是在大O中,它并不重要,因为 -1 与/ 2相同。