# 斐波那契数列是学计算机入门最经典的一道题目# 斐波那契数列(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*)在现代物理、准晶
# 体结构、化学等领域,斐波纳契数列都有直接的应用。# 兔子问题(推导法可以得出规律)
# 斐波那契数列又因数学家列昂纳多·斐波那契以兔子繁殖为例子而引入,故又称为“兔子数列”。一般而言,兔子在出生两个月后,
# 就有繁殖能力,一对兔子每个月能生出一对小兔子来。如果所有兔子都不死,那么一年以后可以繁殖多少对兔子?# 走楼梯问题(排列组合)(数学归纳法可以得到规律)
# 有一段楼梯有10级台阶,规定每一步只能跨一级或两级,要登上第10级台阶有几种不同的走法?# 这两个问题都是典型的斐波那契数列问题# 下面是python实现的几种方法# 1
def func(num):'''迭代器实现fib这个效率最高,要多少直接给多少:param num:第几个fib的索引值:return: 第几个索引对应的fib值'''n, a, b = 0, 0, 1while n < num:yield ba, b = b, a + bn = n + 1g = func(50)
for i in range(50):print("第" + str(i + 1) + "个值:", g.__next__())# 2
def fib(num):'''循环实现fib,效率比递归高:param num:第几个fib的索引值:return: 第几个索引对应的fib值'''n, a, b = 0, 0, 1while n < num:print(b)a, b = b, a + bn = n + 1fib(50)# 3
def fib(num):'''递归实现求fib的值,这个效率是最低的,所有的递归函数都可以用循环实现(之所以效率低是因为有一个回溯的过程):param num:第几个fib的索引值:return: 第几个索引对应的fib值'''if num == 0:return 0else:return int(1 and num < 2) or fib(num - 1) + fib(num - 2)for i in range(50):print(fib(i + 1))# 4
def fib(n):'''匿名函数配合三元运算符实现求fib值:param num:第几个fib的索引值:return: 第几个索引对应的fib值'''f = lambda n, x=0, y=1: x if not n else f(n - 1, y, x + y)return (f(n))for i in range(50):print(fib(i + 1))

转载于:https://www.cnblogs.com/xiao-xue-di/p/9632644.html

Fib(兔子问题)python实现多种方法相关推荐

  1. Python 使用多种方法对图像进行锐化处理——图像处理

    通过使用不同方法对图像进行锐化处理,更改参数对比图像显示,代码如下: # (6).随机读取一幅图像,对其进行锐化, #导入库 import cv2 import skimage.filters as ...

  2. 通过python使用多种方法改变图片尺寸

    图片拉伸改变尺寸 文章目录 图片拉伸改变尺寸 使用PIL库 使用PythonMagick库 保持比例 不保持比例 使用PIL库 使用PIL库当中的Image功能即可实现对图片的拉伸. 在下列代码中,我 ...

  3. Python多种方法生成菲波那切数列

    文章目录 一.顺序输出 二.利用递归函数实现 三.循环 四.利用列表实现 五.利用reduce实现 六.利用生成器实现 七.利用魔术方法实现 记录多种方法生成菲波那切数列 一.顺序输出 代码如下: # ...

  4. python怎么读文件内容-Python读取文件内容为字符串的方法(多种方法详解)

    以下笔记是我在 xue.cn 学习群之数据分析小组所整理分享的心得.相关背景是:我选择中文词频统计案例作为考察大家python基础功掌握程度. 以小见大,下面是2个小技能的具体实战: 如何灵活地处理文 ...

  5. python判断字母数字_Python判断字符串是否为字母或者数字(浮点数)的多种方法

    str为字符串s为字符串 str.isalnum() 所有字符都是数字或者字母 str.isalpha() 所有字符都是字母 str.isdigit() 所有字符都是数字 str.isspace() ...

  6. python去重语句_Python对列表去重的多种方法(四种方法)

    无聊统计了下列表去重到底有多少种方法.下面小编给大家总结一下,具体内容详情如下: 开发中对数组.列表去重是非常常见的需求,对一个list中的id进行去重,有下面几种方法,前面两种方法不能保证顺序, 后 ...

  7. python清空集合_python集合删除多种方法详解

    这篇文章主要介绍了python集合删除多种方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 删除指定的元素 A={'a','c','b','d ...

  8. python生兔子问题(递归算法)_兔子问题python解决方法

    兔子问题 Python 解决方法 题目 : 有一对兔子, 从出生后第 3 个月起每个月都生一对兔子, 小兔子长到第三月后每个月 又生一对兔子,假如兔子都不死,问每个月兔子总数为多少 ? 这就是典型的斐 ...

  9. python 多重列表去重_Python对列表去重的多种方法(四种方法)

    Python对列表去重的多种方法(四种方法) 无聊统计了下列表去重到底有多少种方法.下面小编给大家总结一下,具体内容详情如下: 开发中对数组.列表去重是非常常见的需求,对一个list中的id进行去重, ...

最新文章

  1. Jquery基本知识点的总结
  2. [原创][连载].基于SOPC的简易数码相框 - Nios II SBTE部分(软件部分) - 从SD卡内读取图片文件,然后显示在TFT-LCD上...
  3. Python编程语言学习:for循环实现对多个不同的DataFrame数据执行相同操作(可用于对分开的测试集、训练集实现执行相同逻辑任务)
  4. 论述类文本知识框架_考前知识梳理与答题技巧之论述类文本
  5. ie手机浏览器_IE永不为奴?微软Edge浏览器开启双核模式
  6. scala编程第16章学习笔记(1)
  7. 记2018年技术人一次短暂的创业
  8. C语言中二维数组名与数组地址、首行地址、首行首元素地址关系与区别详解(初学者必须掌握)
  9. 教你如何写出高效整洁的 css 代码——css优化(转载)
  10. UDID 和 UUID 的问题
  11. Ubuntu 11.04 (Natty Narwhal)图形安装教程、基本设置
  12. 深度信念网络_深度学习如何感知跟踪位置变化
  13. 决策树与XGBOOST
  14. 特征图谱字典_空间数据图谱为特征
  15. 高频交易——当期货配对交易加入了止损
  16. 与台湾的第一次亲密接触
  17. Cadence Other格式网表导出与导入ortelesis.dll
  18. js月份的计算公式_JS根据生日月份和日期计算星座的简单实现方法
  19. 解决unix:///var/run/supervisor/supervisor.sock no such file问题
  20. 查找:顺序查找、二分查找、分块查找

热门文章

  1. 2022-2028年中国UI设计行业现状调研分析及发展趋势研究报告
  2. Go 1.16 的这个新变化需要适应下:go get 和 go install 的变化
  3. Pandas 使用入门
  4. 2018年终总结:自由而独立
  5. 【Design pattern】简单工厂过渡策略模式
  6. 【算法基础】时间复杂度:大O阶方法
  7. TVM 各个模块总体架构
  8. AI解决方案:边缘计算和GPU加速平台
  9. 一篇学会HttpServletRequest
  10. 2021年大数据常用语言Scala(十五):基础语法学习 元组  重点掌握