首先 - 是的,我知道有很多类似的问题,但我仍然没有得到它。
所以这段代码的Big-O表示法是O(2 ^ n)
public static int Fibonacci(int n)
{
if (n <= 1)
return n;
else
return Fibonacci(n - 1) + Fibonacci(n - 2);
}
即使我使用让他们说 6 来运行它,功能也会被称为 25 次,如下图所示:
Fibonacci 由于O(2 ^ 6)= 64,不应该 64
答案 0 :(得分:1)
这里的逻辑几乎没有问题:
Theta(phi^n)
,如果您正在寻找更严格的约束(其中phi
是&#34;黄金口粮&#34;,phi ~= 1.618
。在这里,问题是斐波纳契确实是O(2^n)
,但是这个界限并不紧张,所以实际的呼叫数量将低于估计的数量(对于足够大的n
,起)。