递归优化的斐波那契数列
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了递归优化的斐波那契数列相关的知识,希望对你有一定的参考价值。
参考技术A斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”。
该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。如: 1 1 2 3 5 8 ..
计算公式: F(N) = F(N - 1) + F(N - 2) (N > 1)
尾递归:尾调用的一种特殊情况,特别的是尾递归在最后一步 调用自身 。
非尾递归Fibonacci序列实现如下:
尾递归优化的Fibonacci序列实现如下:
斐波那契数列
题目要求
写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项。斐波那契数列的定义如下:
F(0) = 0, F(1) = 1
F(N) = F(N - 1) + F(N - 2), 其中 N > 1.
斐波那契数列由 0 和 1 开始,之后的斐波那契数就是由之前的两数相加而得出。答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。
算法分析
用循环或递归实现均可,当前数为前两项之和,注意不同题目初始值可能不同。
代码
class Solution(object):
def fib(self, n):
x = 0
y = 1
temp = 0
if n == 0 or n == 1:
return n
for i in range(2, n + 1):
temp = x + y
x = y
y = temp
return temp % 1000000007
以上是关于递归优化的斐波那契数列的主要内容,如果未能解决你的问题,请参考以下文章