首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何证明该Fibonacci序列的时间复杂度为O(n)

如何证明该Fibonacci序列的时间复杂度为O(n)
EN

Stack Overflow用户
提问于 2018-09-26 18:52:32
回答 1查看 39关注 0票数 0

在下面的代码中,我知道时间复杂度是O(n),但是我如何以适当的方式证明它?是说搜索数组就足够了吗?

代码语言:javascript
复制
int f[N];
F(n)
{
    if (f[n] >= 0) return f[n];
    f[n] = F(n-1) + F(n-2);
    return f[n];
}

int main()
{
    read n;
    f[0] = 0; f[1] = 1;
    for (i = 2; i <= n; i++)
        f[i] = -1;
    print F(n);
}
EN

回答 1

Stack Overflow用户

发布于 2018-10-03 21:57:51

对于调用F的数组中的每个元素,它可能看起来像是一个递归,但却是一个糟糕的实现。fn-1和fn-2调用实际上只是返回值。

您将有3n次对F(n)的调用,因此仍然是O(n)。

如果你不一定要使用递归,你可以用一个循环来编写它。

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

https://stackoverflow.com/questions/52516051

复制
相关文章

相似问题

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