【问题标题】:Time complexity of a recursive fibonnaci program [duplicate]递归斐波那契程序的时间复杂度
【发布时间】:2011-05-03 06:49:00
【问题描述】:

可能重复:
Computational complexity of Fibonacci Sequence

嗨, 我昨天发现了一个关于递归斐波那契程序的时间复杂度的归纳证明。证明首先声称复杂性是指数的(后来通过归纳证明):

存在一个“r”使得 f(n) >= r^n 代表所有 r>=1 和 n>=1。

然后它选择 r 等于 1+sqrt(5)/2 使得它满足方程 r^2 = r + 1。

(后来证明它选择 r 是合理的)。

然后它说现在该语句变为 f(n) >= r^(n-2)。

我不明白这部分是如何从 r^n 变成 r^(n-2) 的。有人可以帮我解决这个问题吗?

【问题讨论】:

    标签: c algorithm math recursion


    【解决方案1】:

    正如丹尼尔所说,r 大于 1,所以 r^n 大于 r^(n-1) 大于 r^(n-2) 等等...

    所以你确实有:f(n) >= r^n >= r^(n-1) >= r^(n-2)

    【讨论】:

      【解决方案2】:
      • f(n) >= r^n
      • r * r * f(n) >= r^n(自r > 1
      • f(n) >= r^(n-2)

      不过,我不明白这与时间复杂度有何关系..?这听起来更像是对比内公式的讨论。

      【讨论】:

      • 它表明f(n)Ω(r^n) 通过显示f(n) >= r^n 对于一些r 和足够大的n
      • @hammer 我明白了,这似乎是一种有趣的方法。在我看来,自然的论点是这样的:f(n) = 2*f(n-2) 是微不足道的指数(给定f(1) = 1),因为它每两步加倍,f(n-1) + f(n-2) > 2*f(n-2) 因为f 单调增加,因此f(n) = f(n-1) + f(n-2) 也是指数的。这不是更简单吗? :-)
      • 是的,我同意这是一种有点复杂的方法。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-11-28
      • 2018-05-31
      • 2019-04-25
      • 2021-05-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多