Python

您所在的位置:网站首页 python中斐波那契数列 Python

Python

2024-06-14 11:38| 来源: 网络整理| 查看: 265

一、斐波那契数列的简单介绍 1、什么是斐波那契数列?

斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家莱昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:0、1、1、2、3、5、8、13、21、34、……

斐波那契数列由 0 和 1 开始,之后的斐波那契数列系数由之前的两数相加得出

2、斐波那契的神奇之处

也许你觉得,这么一串数有什么用,我平常也用不到,但实际上,很多地方都有斐波那契数列的影子。

兔子数列

比如,我开篇提到的“兔子数列”。假设一开始有两只兔子,一公一母,两个月后开始繁殖,一对兔子每个月能且只能生出一对小兔子来,假设兔子都不会死亡,那么一年之后可以繁殖多少对兔子?

分析: 第一个月和第二个月,兔子没有繁殖能力,所以是一对; 第三个月,兔子有了繁殖能力,生下了一对小兔子,现在兔子是两对; 第四个月,大兔子依旧可以生下一对小兔子,由于现在小兔子还未成年,没有繁殖能力,所以,现在兔子是三对; 四个月后,小兔子长大了成为了小老兔子,可以和大老兔子一起繁殖,这时候就拥有了五对兔子; ……

以此类推我就得到了这样一串数: 1,1,2,3,5,8,13,21…

与黄金分割比的关系 斐波那契数列从第三项开始,每一项都等于前两项的和。 它的通项公式为:

[(1+√5)/2]^n /√5 - [(1-√5)/2]^n /√5 【√5表示根号5】

1÷1=1,1÷2=0.5,2÷3=0.666…,3÷5=0.6,5÷8=0.625,55÷89=0.617977…… 144÷233=0.618025…46368÷75025=0.6180339886…… 当而且当n趋向于无穷大时,前一项与后一项的比值越来越逼近黄金分割0.618

二、递归实现斐波那契数列

代码:

def fibo(n): """递归函数实现斐波那契数列""" if n == 1 or n == 2: return 1 else: return fibo(n-1) + fibo(n -2) if __name__ == '__main__': n = int(input("请输入数列的项数:")) res = fibo(n) print(res)

运行结果:

请输入数列的项数:9 34 三、一行代码实现斐波那契数列 n = int(input("请输入数列的项数:")) fibo = [x[0] for x in [(a[i][0], a.append([a[i][1], a[i][0]+a[i][1]])) for a in ([[1, 1]], ) for i in range(n)]] print(fibo) 四、问题总结 1. RecursionError: maximum recursion depth exceeded in comparison 问题描述:递归超过了最大的深度问题原因: python的递归深度默认为1000。当递归深度超过1000时,就会报错。解决方法:将递归的深度修改的大一些import sys sys.setrecursionlimit(100000) 查看递归层数def recursion(depth): depth += 1 print(depth) recursion(depth) recursion(0)


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3