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
,请解释原因?
答案 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