斐波那契数列非递归算法(fibonacci)
来源:互联网 发布:自学seo视频教程 编辑:程序博客网 时间:2024/04/29 12:18
斐波那契数列又因数学家列昂纳多·斐波那契以兔子繁殖为例子而引入,故又称为“兔子数列”。
fibonacci 数列定义:
n = 1,2 时,fib(n) = 1
n > 2 时,fib(n) = fib(n-2) + fib(n-1)
此算法最大的优点是不存在重复计算,故效率比递归算法快的多得多。
下面简略比较一下递归与非递归之间的区别:
使用非递归算法求到第n(n>3)个月兔子的数量,是从第3个月开始,将前两个月兔子相加求当月的兔子的数量,并记录
前1个月兔子的数量,直到第n个月,用n-1个月和n-2个月兔子相加求出结果,这样的好处是,我们只计算了n次就求出了结
果,即时间复杂度为O(n);
用递归算法又会是什么结果呢?求解fib(n),把它推到求解fib(n-1)和fib(n-2)。也就是说,为计算fib(n),必须先计算
fib(n-1)和fib(n-2),而计算fib(n-1)和fib(n-2),又必须先计算fib(n-3)和fib(n-4)。依次类推,直至计算fib(1)和fib(0),
分别能立即得到结果1和0。在递推阶段,必须要有终止递归的情况。例如在函数fib中,当n为1和0的情况。在回归阶段,当
获得最简单情况的解后,逐级返回,依次得到稍复杂问题的解,例如得到fib(1)和fib(0)后,返回得到fib(2)的结果,……,
在得到了fib(n-1)和fib(n-2)的结果后,返回得到fib(n)的结果,时间复杂度为O(2n)(括号内为2的n次方).
- 斐波那契数列非递归算法(fibonacci)
- 斐波那契数列递归与非递归算法
- 斐波那契数列递归和非递归算法
- Fibonacci(斐波那契)数列的递归与非递归实现 python
- 斐波那契数列非递归算法
- 递归算法深入浅出三:递归求Fibonacci斐波那契数列
- Fibonacci(斐波那契)序列的递归和非递归算法
- Fibonacci(斐波那契)序列的递归和非递归算法
- 斐波那契数列递归算法和非递归算法以及其时间复杂度分析
- 斐波那契数列的递归算法与非递归算法
- 斐波那契数列递归算法和非递归算法
- 斐波那契数列 递归算法和非递归算法
- 斐波那契数列的递归算法与非递归算法
- 斐波那契数列递归算法和非递归算法实现
- 斐波那契数列的递归算法与非递归算法
- 斐波那契数列(递归与非递归算法)
- 《数据结构、算法与应用》4.(递归和非递归实现斐波那契数列)
- 斐波那契数列的递归和非递归算法
- 关于ping不通的可能原因
- 360公司董事长周鸿祎做客腾讯科技《新产品经理》系列访谈
- 第二个例子(完整)
- 数据类型转换(static_cast, const_cast ,reinterpret_cast ,dynamic_cast )
- 不用光盘可破解电脑系统密码
- 斐波那契数列非递归算法(fibonacci)
- jqurey 学习网站
- H264基本概念之 预测编码、变换编码和熵编码
- Powerbuilder10.5连接oracle10.2
- 信任
- apache无法启动,提示the reques poeration has failed
- 基于annotation的hibernate主键生成策略
- 海恩法则
- 何学林建议国务院设立策划部并创建策划大学