Python |
您所在的位置:网站首页 › python中斐波那契数列 › Python |
一、斐波那契数列的简单介绍
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 |