递归优化的斐波那契数列

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

以上是关于递归优化的斐波那契数列的主要内容,如果未能解决你的问题,请参考以下文章

九度oj 题目1075:斐波那契数列

斐波那契数列

斐波那契数列递归实现

1074.我们喜欢递归的斐波那契数列

类似斐波那契数列的递归

每日一九度之 题目1075:斐波那契数列