python乱炖.1——斐波那契数列代码

python乱炖.1——斐波那契数列代码


学习笔记系列


递归方法

无缓存方法

def fib(n):
    if n == 0 or n == 1:
        return 1
    else:
        return fib(n - 1) + fib(n - 2)

print(fib(35))

有缓存(动态规划)
第一个来自 https://edu.csdn.net/skill/python/python-3-1?typeId=17334

cache = {}

def fib(number):
    if number in cache:
        return cache[number]
    if number == 0 or number == 1:
        return 1
    else:
        cache[number] = fib(number - 1) + fib(number - 2)
    return cache[number]

if __name__ == '__main__':
    print(fib(35))
def fib(n):
    fib_sequence = [1, 1]
    for i in range(2, n + 1):
        fib_sequence.append(fib_sequence[i - 1] + fib_sequence[i - 2])
    return fib_sequence[n]

print(fib(35))


迭代

这个就是直接循环计算了

def fib(n):
    a, b = 1, 1
    for _ in range(n):
        a, b = b, a + b
    return a

print(fib(35))

矩阵幂法

import numpy as np

def fib(n):
    F = np.matrix([[1, 1], [1, 0]])
    return (F**n)[0, 1]

print(fib(35))

这里附上原理
在这里插入图片描述

就结束啦!

  • 9
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值