首先-是的,我知道有很多类似的问题,但我还是不明白。
所以这个代码的大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,如图中所示:
由于O(2^6) = 64,斐波纳契不应该是64吗?
发布于 2017-04-09 17:30:50
这里的逻辑很少有问题:
Theta(phi^n),如果你在寻找更紧的界限( phi是“黄金配给”,phi ~= 1.618 )。在这里,问题是fibonacci确实是O(2^n),但是这个界限并不紧,所以实际调用数将低于估计的调用数(对于足够大的n,以后)。
https://stackoverflow.com/questions/43309719
复制相似问题