混淆了这个算法的复杂性

时间:2013-07-23 15:02:42

标签: algorithm recursion complexity-theory

DAA(n)
{
    if(n<=1)
    {
         return 1;
    }
    else
    {
        return(DAA(n/2)+DAA(n/2)+n);
    }
}

我对有条款n的return语句感到困惑。是否将其计算为T(n)=2T(n/2)+n;或T(n)=2T(n/2)+c,请解释原因?

2 个答案:

答案 0 :(得分:1)

它将是后者,因为尾随n不在函数调用中(为了使它成为前者,它需要像return(DAA(n/2)+DAA(n/2)+DAA(n-1));

答案 1 :(得分:0)

计算任何数字的加法通常被认为是恒定时间。因此

T(n) = 2T(N/2) + 2*time_to_compute_a_addition

那是

T(C) = 2T(N/2)+c