python使用递归实现斐波那契数列

简介: python使用递归实现斐波那契数列

斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……在数学上,斐波纳契数列以如下被以递推的方法定义:F(1)=1,F(2)=1, F(n)=F(n-1)+F(n-2)(n>=3,n∈N*)


使用python如何求为n时的值呢?

def flag(b):
    if b < 0:
        return "请传入大于0的数值!"
    if b == 0:
        return 0
    if b == 1:
        return 1
    if b == 2:
        return 1
    return flag(b-1) + flag(b-2)
print(flag(-1))
print(flag(0))
print(flag(2))
print(flag(3))
print(flag(10))

打印结果:

请传入大于0的数值!
0
1
2
55


如果实现打印出的值为:1,1,2,3,5,8,13,21,34,……该如何实现呢?

#默认值带出小于或等于2的值
resList = [0,1,1]
def flag(n):
    #递归到最后,因为flag(n-1) + flag(n-2)同时执行,n的值为1或2,直接return结果1
    if n == 1 or n == 2:
        return 1
    a = flag(n-1) + flag(n-2)
    #判断如果追加的值小于集合最后一个值时,则不添加值
    if(a > resList[-1]):
        resList.append(a)
    return a
n = 10
#因为resList集合有默认值,所以对于n小于2时,不执行函数 flag(),直接在外部处理
if n < 0:
    print("n不可以小与0")
elif n == 0:
    print("0")
elif n == 1:
    print("0,1")
else:
    flag(n)
    print(resList)

执行结果

[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55]


对于后面这个实现,只是我个人的思路,应该有更简单的做法,欢迎大家分享。

目录
相关文章
|
1月前
|
算法 Python
在Python编程中,分治法、贪心算法和动态规划是三种重要的算法。分治法通过将大问题分解为小问题,递归解决后合并结果
在Python编程中,分治法、贪心算法和动态规划是三种重要的算法。分治法通过将大问题分解为小问题,递归解决后合并结果;贪心算法在每一步选择局部最优解,追求全局最优;动态规划通过保存子问题的解,避免重复计算,确保全局最优。这三种算法各具特色,适用于不同类型的问题,合理选择能显著提升编程效率。
48 2
|
2月前
|
Java 程序员 C++
【Python】链式、嵌套调用、递归、函数栈帧、参数默认值和关键字参数
【Python】链式、嵌套调用、递归、函数栈帧、参数默认值和关键字参数
33 0
【Python】链式、嵌套调用、递归、函数栈帧、参数默认值和关键字参数
|
2月前
|
Python
在Python中实现斐波那契数列(Fibonacci sequence)的4中方法
在Python中实现斐波那契数列(Fibonacci sequence)的4中方法
302 0
|
4月前
|
算法 Python
python函数递归和生成器
python函数递归和生成器
|
4月前
|
算法 数据挖掘 Python
|
4月前
|
数据采集 Java Python
python 递归锁、信号量、事件、线程队列、进程池和线程池、回调函数、定时器
python 递归锁、信号量、事件、线程队列、进程池和线程池、回调函数、定时器
|
5月前
|
缓存 Python
Python中递归错误
【7月更文挑战第17天】
59 8
|
5月前
|
算法 Python
python中算法递归错误(Recursion Errors)
【7月更文挑战第18天】
87 1
|
5月前
|
搜索推荐 Python
快速排序:Python 中的速度之王,揭秘它的递归魔法与性能极限!
【7月更文挑战第12天】快速排序**是高效排序算法,基于分治策略。它选择基准值,将数组分成小于和大于基准的两部分,递归地对两部分排序。
66 6
|
5月前
|
存储 缓存 算法
python中递归深度超限(RecursionError)
【7月更文挑战第15天】
178 1
下一篇
DataWorks