python斐波那契数列前20项_斐波那契数列求解总结(Python版)

本文总结了斐波那契数列的多种求解方式,包括递归、递推、矩阵求解、快速幂算法以及通项公式等,并通过Python实现。文章还探讨了如何避免重复计算和利用生成器优化效率。
摘要由CSDN通过智能技术生成

最近在查阅斐波那契数列时,看到下面的文章,总结得非常好,于是自己上手使用 Python 练习并实现多种求解方法

守望:面试官问你斐波那契数列的时候不要高兴得太早​zhuanlan.zhihu.com

斐波那契数列的定义:

斐波那契数列 又称黄金分割数列,指的是这样一个数列 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368........ 这个数列从第3项开始,每一项都等于前两项之和

根据定义递归求解

已知:Fib(0) = 0,Fib(1) = 1
Fib(n) = Fib(n-1) + Fib(n-2)

# 根据定义递归求解
def Fib_definition(n):
    # 检查输入
    if check_input(n):
        if (n <= 1): return n
        return Fib_definition(n - 1) + Fib_definition(n - 2)
    # 默认返回值
    else:
        return -1

递归求解,避免重复计算已经出现过的元素

我们都知道,根据定义递归求解,会存在大量的重复计算,于是我们将已经计算过的值保存在数组里,这样在后续需要计算时可以直接使用已经计算过的值,避免重复计算

# 递归求解,避免重复计算已经出现过的元素
def Fib_definition_notRepeat(n, fib_arr = [0, 1]):
    if check_input(n):
        # 检查输入
        if n < 2: return fib_arr[n]
        else:
            # 填充数组
            for x in range(n):
                fib_arr.append(-1)
            # 当求得 fib_arr[n-1] 时,fib_arr[n-2] 已知
            fib_arr[n] &#
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值