【发布时间】:2016-12-02 12:33:05
【问题描述】:
我正在阅读 Skiena 的“算法设计手册”一书中的“8.1.1 Fibonacci numbers by recursion”部分。
我无法理解本节的以下段落。
这个算法需要多少时间来计算 F(n)?由于 Fn+1/Fn ≈ φ = (1+√5)/2 ≈ 1.61803,这意味着 Fn > 1.6^n。由于我们的递归树有 只有 0 和 1 作为叶子,加起来这么大的数字意味着我们必须有 至少 1.6n 个叶子或过程调用!这个不起眼的小程序需要指数级的时间来运行!
谁能解释一下我在这一段中提出的以下问题。
- 为什么用Fn+1/Fn来计算算法时间?
- 为什么 Fn > 1.6^n
- 我们将如何获得 1.6n 个叶子或过程调用?
请以F(4)为例说明
【问题讨论】:
-
我投票决定将此问题作为离题结束,因为它与computer science
-
朴素斐波那契递归的复杂性是...斐波那契!
-
看看here 了解处理斐波那契计算的有趣方式。
-
哪种斐波那契算法?