Fib(兔子问题)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*)在现代物理、准晶 # 体结构、化学等领域,斐波纳契数列都有直接的应用。# 兔子问题(推导法可以得出规律) # 斐波那契数列又因数学家列昂纳多·斐波那契以兔子繁殖为例子而引入,故又称为“兔子数列”。一般而言,兔子在出生两个月后, # 就有繁殖能力,一对兔子每个月能生出一对小兔子来。如果所有兔子都不死,那么一年以后可以繁殖多少对兔子?# 走楼梯问题(排列组合)(数学归纳法可以得到规律) # 有一段楼梯有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实现多种方法相关推荐
- Python 使用多种方法对图像进行锐化处理——图像处理
通过使用不同方法对图像进行锐化处理,更改参数对比图像显示,代码如下: # (6).随机读取一幅图像,对其进行锐化, #导入库 import cv2 import skimage.filters as ...
- 通过python使用多种方法改变图片尺寸
图片拉伸改变尺寸 文章目录 图片拉伸改变尺寸 使用PIL库 使用PythonMagick库 保持比例 不保持比例 使用PIL库 使用PIL库当中的Image功能即可实现对图片的拉伸. 在下列代码中,我 ...
- Python多种方法生成菲波那切数列
文章目录 一.顺序输出 二.利用递归函数实现 三.循环 四.利用列表实现 五.利用reduce实现 六.利用生成器实现 七.利用魔术方法实现 记录多种方法生成菲波那切数列 一.顺序输出 代码如下: # ...
- python怎么读文件内容-Python读取文件内容为字符串的方法(多种方法详解)
以下笔记是我在 xue.cn 学习群之数据分析小组所整理分享的心得.相关背景是:我选择中文词频统计案例作为考察大家python基础功掌握程度. 以小见大,下面是2个小技能的具体实战: 如何灵活地处理文 ...
- python判断字母数字_Python判断字符串是否为字母或者数字(浮点数)的多种方法
str为字符串s为字符串 str.isalnum() 所有字符都是数字或者字母 str.isalpha() 所有字符都是字母 str.isdigit() 所有字符都是数字 str.isspace() ...
- python去重语句_Python对列表去重的多种方法(四种方法)
无聊统计了下列表去重到底有多少种方法.下面小编给大家总结一下,具体内容详情如下: 开发中对数组.列表去重是非常常见的需求,对一个list中的id进行去重,有下面几种方法,前面两种方法不能保证顺序, 后 ...
- python清空集合_python集合删除多种方法详解
这篇文章主要介绍了python集合删除多种方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 删除指定的元素 A={'a','c','b','d ...
- python生兔子问题(递归算法)_兔子问题python解决方法
兔子问题 Python 解决方法 题目 : 有一对兔子, 从出生后第 3 个月起每个月都生一对兔子, 小兔子长到第三月后每个月 又生一对兔子,假如兔子都不死,问每个月兔子总数为多少 ? 这就是典型的斐 ...
- python 多重列表去重_Python对列表去重的多种方法(四种方法)
Python对列表去重的多种方法(四种方法) 无聊统计了下列表去重到底有多少种方法.下面小编给大家总结一下,具体内容详情如下: 开发中对数组.列表去重是非常常见的需求,对一个list中的id进行去重, ...
最新文章
- Jquery基本知识点的总结
- [原创][连载].基于SOPC的简易数码相框 - Nios II SBTE部分(软件部分) - 从SD卡内读取图片文件,然后显示在TFT-LCD上...
- Python编程语言学习:for循环实现对多个不同的DataFrame数据执行相同操作(可用于对分开的测试集、训练集实现执行相同逻辑任务)
- 论述类文本知识框架_考前知识梳理与答题技巧之论述类文本
- ie手机浏览器_IE永不为奴?微软Edge浏览器开启双核模式
- scala编程第16章学习笔记(1)
- 记2018年技术人一次短暂的创业
- C语言中二维数组名与数组地址、首行地址、首行首元素地址关系与区别详解(初学者必须掌握)
- 教你如何写出高效整洁的 css 代码——css优化(转载)
- UDID 和 UUID 的问题
- Ubuntu 11.04 (Natty Narwhal)图形安装教程、基本设置
- 深度信念网络_深度学习如何感知跟踪位置变化
- 决策树与XGBOOST
- 特征图谱字典_空间数据图谱为特征
- 高频交易——当期货配对交易加入了止损
- 与台湾的第一次亲密接触
- Cadence Other格式网表导出与导入ortelesis.dll
- js月份的计算公式_JS根据生日月份和日期计算星座的简单实现方法
- 解决unix:///var/run/supervisor/supervisor.sock no such file问题
- 查找:顺序查找、二分查找、分块查找