返回题库

斐波那契递归的时间增长比

Fibonacci Runtime

专题
Algorithmic Programming / 算法编程
难度
L4

题目详情

朴素递归计算 Fib(n) 的时间是指数级。

如果 Fib(n) 需要 100 秒,估计 Fib(n+1) 需要多少秒?

Naive recursion for Fib is exponential. If Fib(n) took 100s, how many seconds for Fib(n+1)?

解析

朴素递归的调用规模与斐波那契数同阶,因此相邻时间比趋近

φ1.618.\varphi\approx 1.618.

所以 Fib(n+1) 约为 100×1.618162100\times 1.618\approx 162 秒。更好的做法是用 DP(O(n)O(n))或矩阵快速幂(O(logn)O(\log n))。


Original Explanation

Time ratio ϕ1.618\approx \phi\approx1.618. So 162\approx 162 seconds. Not efficient. Better do O(n)O(n) or O(logn)O(\log n) matrix exponent.