我正在学习时间的复杂性,偶然发现了这样的方法:
double F(int n)
{
if (n <= 1)
return 4;
return F(n - 3) + 5 * F(n - 4) + 10 * F(n / 5) + 4 * n;
}
我知道前两行只是例如2 * c,其中c是常数,最后一行怎么样?整个方法的复杂性是什么?
F(n) = 2 * c + F(n - 3) + 5 * F(n - 4) + 10 * F(n / 5) + 4 * n =
?
还有像:
这样的方法 if (n <= 1)
return 4;
if (values[n] != 0)
return values[n];
values[n] = F(n - 3) + 5 * F(n - 4) + 10 * F(n / 5) + 4 * n;
return values[n];
我怎么能算第二个?前四行4 * c?