python使用递归实现斐波那契数列的示例详解

 更新时间:2024年01月15日 10:53:37   作者:笑小枫  
这篇文章主要给大家介绍了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]

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

以上就是python使用递归实现斐波那契数列的示例详解的详细内容,更多关于python递归实现斐波那契数列的资料请关注脚本之家其它相关文章!

相关文章

  • 如何基于python操作excel并获取内容

    如何基于python操作excel并获取内容

    这篇文章主要介绍了如何基于python操作excel并获取内容,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-12-12
  • 简单了解Python3 bytes和str类型的区别和联系

    简单了解Python3 bytes和str类型的区别和联系

    这篇文章主要介绍了简单了解Python3 bytes和str类型的区别和联系,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-12-12
  • python关于图片和base64互转的三种方式

    python关于图片和base64互转的三种方式

    无论使用cv2、PIL还是直接读取图片的方法进行图片与Base64的转换,核心步骤都涉及到二进制格式的转换,每种方法的基本过程都是:Base64转二进制,然后二进制转图片,或反向操作,这些方法均基于二进制与图片转换的基本原理
    2024-09-09
  • windows、linux下打包Python3程序详细方法

    windows、linux下打包Python3程序详细方法

    这篇文章主要介绍了windows、linux下打包Python3程序详细方法,需要的朋友可以参考下
    2020-03-03
  • python GUI库图形界面开发之PyQt5切换按钮控件QPushButton详细使用方法与实例

    python GUI库图形界面开发之PyQt5切换按钮控件QPushButton详细使用方法与实例

    这篇文章主要介绍了python GUI库图形界面开发之PyQt5切换按钮控件QPushButton详细使用方法与实例,需要的朋友可以参考下
    2020-02-02
  • Python实现Web应用国际化i18n的示例详解

    Python实现Web应用国际化i18n的示例详解

    这篇文章主要为大家详细介绍了如何基于Python的gettext模块,实现一个灵活、可扩展的多语言支持系统,文中的示例代码讲解详细,有需要的可以参考下
    2025-02-02
  • 使用PyCharm创建Django项目及基本配置详解

    使用PyCharm创建Django项目及基本配置详解

    pycharm是个很不错的python开发工具,大大缩短了python项目的创建时间以及调试时间。这篇文章主要介绍了使用PyCharm创建Django项目及基本配置详解,pycharm是个很不错的python开发工具,大大缩短了python项目的创建时间以及调试时间
    2018-10-10
  • 深入探索Django中间件的应用场景

    深入探索Django中间件的应用场景

    Django中间件是一种可插拔的应用程序组件,可在请求和响应处理过程中修改Django的行为。中间件可用于处理请求、响应、异常等,还可用于实现身份验证、缓存、性能监控等常用功能。通过深入探索中间件的应用场景,可以提高Django应用程序的可扩展性和灵活性
    2023-05-05
  • Pandas时间类型转换与处理的实现示例

    Pandas时间类型转换与处理的实现示例

    本文主要介绍了Pandas时间类型转换与处理的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-07-07
  • Tensor和NumPy相互转换的方法

    Tensor和NumPy相互转换的方法

    本文主要介绍了Tensor和NumPy相互转换的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-03-03

最新评论