python经典百题之兔子出生问题

2023-11-02

题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月

后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?

这是一个经典的 Fibonacci 数列问题,可以通过递归或循环来解决。

递归方法:

由题意可知,第 n 个月的兔子数等于第 n-1 个月的兔子数加上第 n-2 个月的兔子数。设 f(n) 表示第 n 个月的兔子数,则有:

f(n) = f(n-1) + f(n-2)

同时,边界条件为 f(1) = f(2) = 1。

使用 Python 实现递归方法:

def rabbit(month):
    if month == 1 or month == 2:
        return 1
    else:
        return rabbit(month-1) + rabbit(month-2)

month = int(input("请输入月份:"))
total_rabbits = rabbit(month)
print("{}个月后,兔子的总数为{}".format(month, total_rabbits))
 

循环方法:

同样,可以使用循环的方式计算 Fibonacci 数列。用变量 a 表示前一个数,b 表示当前数,将每次计算得到的数赋值给 b,同时将 a 赋值为之前的 b,直到计算到第 n 个数,即为所求的兔子总数。

使用 Python 实现循环方法:

month = int(input("请输入月份:"))
rabbits = [1, 1]

for i in range(2, month):
    rabbits.append(rabbits[i-1] + rabbits[i-2])

total_rabbits = rabbits[-1] * 2
print("{}个月后,兔子的总数为{}".format(month, total_rabbits))
 

 方法三:使用生成器

def rabbits():
    a, b = 0, 1
    while True:
        yield b
        a, b = b, a+b

month = int(input("请输入月份:"))
total_rabbits = 0
for i, r in enumerate(rabbits()):
    if i >= month:
        break
    total_rabbits += r

print("{}个月后,兔子的总数为{}".format(month, total_rabbits*2))
 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python经典百题之兔子出生问题 的相关文章

随机推荐

  • 【论文随笔】强化学习与奖励机 LTL and Beyond: Formal Languages for Reward Function Specification in RL

    前言 最近对强化学习比较感兴趣 来读一读时序逻辑与强化学习交叉的文章 P S 随着毕业设计的结束 最近恢复了一波旧帖子 另外新建了个人网站 可能慢慢把笔记都移到个人网站上 但就目前而言还是CSDN的编辑器用着更顺手一些些 主要参考文献 Ca
  • python机器学习入门到精通--实战分析(三)

    利用sklearn分析鸢尾花 前面两篇文章提到了机器学习的入门的几个基础库及拓展练习 现在我们就对前面知识点进行汇总进行一个简单的机器学习应用 并构建模型 练习即假定一名植物专家收集了每一朵鸢尾花的测量数据 花瓣的长度和宽度以及花萼的长度和
  • -bash: netstat: 未找到命令

    linux命令报错信息 bash netstat 未找到命令 root localhost netstat anp bash netstat 未找到命令 原因分析 缺少Net tools Net tools 包含一系列程序 是构成了 Lin
  • 本地安装node.js安装,使用npm下载插件

    操作系统 windows10 开发工具 VS Code 1 下载node js文件 全程下一步即可 2 打开vscode 运行终端 此处打开的额终端路径是你当前的项目根目录 node中自带npm 所以安装号node就已经安装号 npm了 使
  • 白鲸开源代立冬:一年5个孵化项目来自于中国,佛系Apache如何帮助中国开源立足全球?

    近两年 在Apache等顶尖开源基金会中涌现出很多像SeaTunnel这样的国产开源项目 但由于起步较晚 中国开源与海外还存在明显差距 那么中国开源该如何追赶 本期 开源访谈录 邀请到了Apache mentor代立冬来分享他的见解 本期受
  • Ubuntu 20.04vscode配置C语言

    网上好多都是乱七八糟的 调的我心烦 我自己把自己配置成功的拿出来方在这里给大家看了 vscode配置C语言实际上就是每个文件夹修改一下launch json和tasks json文件 launch json version 0 2 0 co
  • Google分布式三篇论文--MapReduce

    MapReduce 超大机群上的简单数据处理 摘要 MapReduce是一个编程模型 和处理 产生大数据集的相关实现 用户指定一个map函数处理一个key value对 从而产生中间的key value对集 然后再指定一个reduce函数合
  • SpringBoot2.0之整合Apollo

    SpringBoot2 0之整合Apollo Spring Boot客户端对接阿波罗服务器端 核心源码都在这个压缩包里面 封装好了环境 运行shell脚本就ok了 下面进入到本地maven仓库 远程仓库apollo的jar包 只能打包到本地
  • 【路径规划】基于模糊逻辑系统实现车辆的自主导航附matlab代码

    1 内容介绍 在过去的30年 用于城市地面交通工具中自动驾驶技术的开发已经得到了飞速的发展 目前 现代自主驾驶车辆已具备一定感知车辆周围环境的能力 比如根椐分类所分析对象的类型并进行检测 观测周身环境的变化并评估对象的移动可能性 在遵循交通
  • 交换瓶子

    交换瓶子 贡献者 programmer ada 有N个瓶子 编号 1 N 放在架子上 比如有5个瓶子 2 1 3 5 4 要求每次拿起2个瓶子 交换它们的位置 经过若干次后 使得瓶子的序号为 1 2 3 4 5 对于这么简单的情况 显然 至
  • SpringBoot Controller 提取Post请求中Body的参数问题——驼峰命名规则

    正常在Controller方法中使用 RequestBody 类 对象进行参数接收 通过ApiFox对对应接口发起请求 但控制台打印内容为空 原因 ApiFox中设置json格式的body参数时 变量名未遵循驼峰命名规则 类似于printE
  • Qt样式表的使用

    Qt中可以灵活的使用层叠样式表 CSS 其语法和CSS很相似 因为HTML CSS的灵活性 所以可以很方便的为QT界面设计自己需要的外观 除了子类化Style类 使用QT样式表 QStyleSheet 是另一种快速改变QT程序UI风格的方法
  • java开发记录-微信二维码支付

    关于微信二维码支付的一点点总结 如上一个博客所说 开始开发前需要前往官网进行一系列的接入 从而得到相关的appid 密钥 本次的开发中 使用谷歌zxing实现将支付链接字符串转为二维码 附上相关依赖
  • 用STM32F103输出一路PWM波形

    用STM32F103输出一路PWM波形 一 PWM简介 二 STM32F1 PWM介绍 三 PWM输出配置步骤 四 PWM代码 Keil仿真 一 PWM简介 PWM是 Pulse Width Modulation 的缩写 中文意思就是脉冲宽
  • 6个超酷智能交互案例分享

    本次的案例分享主要集中在智能交互方向 主要集中在4个方面 智能设备如何增强情感化设计 全息投影如何运用在实际商业领域 智慧家庭的终端设计如何陪伴宠物 私域流量借助图像识别的智能营销玩法 机器人难道只能屏幕脸表达情感 只会嘤嘤嘤求抱抱的机器人
  • 亚马逊云科技发布全新数据管理服务Amazon DataZone

    亚马逊云科技在2022 re Invent全球大会上宣布 推出一项全新的数据管理服务Amazon DataZone 它可以让客户更快 更轻松地对存储在亚马逊云科技 客户本地和第三方来源的数据进行编目 发现 共享和治理 借助Amazon Da
  • spring aop的@Before,@Around,@After,@AfterReturn,@AfterThrowing执行顺序

    1 AOP的基本概念 切面 Aspect 通知和切入点共同组成了切面 aspect 可以从注解方式来理解 代码如下 aspect为类上面的注解 切面 pointcut 切入点 为此类内一个空方法上面的注解 可以把拦截的地址表达式表示为方法签
  • xgboost 可视化与结果分析

    xgboost 的可视化 调用 xgb to graphviz 或 xgb plot tree 接口 1 指定 fmap feature map https www kaggle com mmueller xgb feature impor
  • WPF界面开发使用技巧放送 - 如何支持WinUI 3预览版

    下载DevExpress v20 1完整版 DevExpress v20 1汉化资源获取 通过DevExpress WPF Controls 您能创建有着强大互动功能的XAML基础应用程序 这些应用程序专注于当代客户的需求和构建未来新一代支
  • python经典百题之兔子出生问题

    题目 古典问题 有一对兔子 从出生后第3个月起每个月都生一对兔子 小兔子长到第三个月 后每个月又生一对兔子 假如兔子都不死 问每个月的兔子总数为多少 这是一个经典的 Fibonacci 数列问题 可以通过递归或循环来解决 递归方法 由题意可