函数的复杂度f(n)= f(n-1)+ f(n-2)+ f(n-3)+ ... + 1

时间:2013-01-26 10:16:12

标签: algorithm time-complexity

为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 ;
}

1 个答案:

答案 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相同。