首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >斐波那契序列时间复杂度

斐波那契序列时间复杂度
EN

Stack Overflow用户
提问于 2017-04-09 17:27:14
回答 1查看 889关注 0票数 0

首先-是的,我知道有很多类似的问题,但我还是不明白。

所以这个代码的大O表示法是O(2^n)

代码语言:javascript
复制
 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吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-09 17:30:50

这里的逻辑很少有问题:

  1. 大O表示法只是给出了上渐近界,而不是紧界,这就是大Theta的目的。
  2. 斐波纳契实际上是Theta(phi^n),如果你在寻找更紧的界限( phi是“黄金配给”,phi ~= 1.618 )。
  3. 在讨论渐近表示法时,讨论低数和忽略常数是没有多大意义的--因为由于渐近复杂性而忽略了它们(但这里不是这样)。

在这里,问题是fibonacci确实是O(2^n),但是这个界限并不紧,所以实际调用数将低于估计的调用数(对于足够大的n,以后)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43309719

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档