Python---函数递归---练习:猴子吃桃问题(本文以递归算法 解法为主)

相关链接:Python---函数递归---练习:斐波那契数列(本文以递归算法为主)-CSDN博客

案例:猴子吃桃问题

猴子吃桃问题。猴子第1天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第2天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半另加一个。到第10天早上想再吃时,就只剩下一个桃子了。求第1天共摘了多少个桃子

思考:一步步来

第一步:确定函数主要要完成什么功能,需要传递哪些参数,确认调用方式


def f(n):
    # 编写递归代码
    
# 调用f函数
print(f(1))


第二步:编写递归的结束条件(出口)


# 第一步:确定函数功能
def f(n):
    # 第二步:编写递归结束条件(出口)
    if n == 10:
        return 1

# 调用函数
print(f(1))


第三步:找出与这个问题相等的等式关系

看要求

猴子第1天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第2天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半另加一个。到第10天早上想再吃时,就只剩下一个桃子了。求第1天共摘了多少个桃子。

求桃子的剩余数量?假设法:假设有10个桃子---------自己开始列举

第1天,10个桃子吃一半,10/2 = 5 + 1 = 6  #  + 1 是 还不过瘾又多吃了一个,总共吃6个,剩4个

第2天,4个桃子吃一半,4/2 = 2 + 1 = 3  #  + 1 是 还不过瘾又多吃了一个,总共吃3个,剩1个

第3天,再想吃剩1个

第n天,总剩余桃子的数量 = (第(n+1)天桃子的剩余桃子的数量 + 1) * 2

# 这里是反推,计算桃子数量-----每天剩余桃子的总数,都是之后一天桃子的总数。

求总的第1天共摘了多少个桃子,那么就可以从第二天初始桃子的总数进行反推,是一开始是一半,除以2,那么就乘以2,再加上1---------就是第一天桃子的总数。

可以把这些情景,当做自己买水果,代入思考,就能很快假设出来。


# 第一步:确定函数功能
def f(n):# 第二步:编写递归结束条件(出口)if n == 10:return 1# 第三步:寻找与这个问题相似的等价公式return (f(n+1) + 1) * 2# 调用函数
print(f(8)) 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/194461.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

类和对象——(5)定义对象数组

归纳编程学习的感悟, 记录奋斗路上的点滴, 希望能帮到一样刻苦的你! 如有不足欢迎指正! 共同学习交流! 🌎欢迎各位→点赞 👍 收藏⭐ 留言​📝 芳华没有草稿纸,我们永久不…

openEuler学习05-ssh升级到openssh-9.5p1

openEuler的版本是openEuler 20.03,ssh的版本是OpenSSH_8.2p1 [roottest ~]# more /etc/os-release NAME"openEuler" VERSION"20.03 (LTS-SP3)" ID"openEuler" VERSION_ID"20.03" PRETTY_NAME"openEuler 20.03 (LTS-…

【Google2023】利用TiDE进行长期预测实战(时间序列密集编码器)

一、本文介绍 大家好,最近在搞论文所以在研究各种论文的思想,这篇文章给大家带来的是TiDE模型由Goggle在2023.8年发布,其主要的核心思想是:基于多层感知机(MLP)构建的编码器-解码器架构,核心创…

Python---函数递归---练习:斐波那契数列(本文以递归算法为主)

编程思想: 如何利用数学模型,来解决对应的需求问题;然后利用代码实现对应的数据模型。 算法:使用代码实现对应的数学模型,从而解决对应的业务问题 程序 算法 数据结构 在经常使用的算法中,有两种非常…

RC低通滤波电路直接带载后会发生什么?

1、滤波的含义 滤波是频域范畴,它说的是不同频率的信号经过一个电路处理后,信号发生变化的问题,变化包含了原始信号幅值和相位的变化,滤波电路对信号的幅值做出的响应称为幅频响应,对信号相位做出的反应称为相频响应。…

设计模式---第五篇

系列文章目录 文章目录 系列文章目录前言一、知道观察者模式吗?前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。 一、知道观察者模式吗? 答:观察者模式是定义对…

逸学java【初级菜鸟篇】12.网络通讯编程

hi,我是逸尘,一起学java吧 目标(任务驱动) 请练掌网络通讯的内容。 局域网和互联网 局域网英文:Local Area Network,缩写:LAN,是指一群通过一定形式连接起来的计算机,…

Java封装讯飞星火大模型历险记

问题描述与分析 现状描述与目标 在使用讯飞星火大模型API的过程中,API的返回结果在可以在其他线程中进行分次打印,但是在main方法中直接打印返回结果,显示为空。这种情况下不利于二次封装,希望在main方法中获取完整的API返回结果…

Linux——基本指令(一)

写在前面: 我们云服务器搭建的Linux系统,使用的镜像版本CentOS 7.6,使用的Xshell远程连接云服务器 前面我们使用超级管理员root账号登录,一般我们使用普通用户登录,那么如何创建新用户呢? 1.创建新用户 &#xff08…

Ubuntu22.04无需命令行安装中文输入法

概要:Ubuntu22.04安装完成后,只需在设置中点点点即可完成中文输入法的安装,无需命令行。 一、安装中文语言包 1、点击屏幕右上角,如下图所示。 2、点击设置 3、选择地区与语言,点击管理已安装的语言 4、点击安装 5、输…

❀My学习Linux命令小记录(10)❀

目录 ❀My学习Linux命令小记录(10)❀ 36.fold指令 37.expr指令 38.iperf指令 39.telnet指令 40.ssh指令 ❀My学习Linux命令小记录(10)❀ 36.fold指令 功能说明:控制文件内容输出时所占用的屏幕宽度&#xff0c…

上门按摩APP小程序,抓住机遇创新服务新模式;

上门按摩APP小程序:抓住机遇,创新服务新模式; 随着现代人对生活质量要求的提高,上门按摩服务正成为一种新的、受欢迎的生活方式。通过APP小程序,用户可以轻松预约按摩服务,解决身体疲劳问题,享受…

Python程序员入门指南:学习时间和方法

文章目录 标题Python程序员入门指南:学习时间、方法和就业前景学习方法建议学习时间 标题 Python程序员入门指南:学习时间、方法和就业前景 Python是一种流行的编程语言,它具有简洁、易读和灵活的特点。Python可以用于多种领域,如…

设计模式基础(1)

目录 一、设计模式的定义 二、设计模式的三大类别 三、设计模式的原则 四、主要设计模式目录 4.1 创建型模式(Creational Patterns) 4.2 结构型模式(Structural Patterns) 4.3 行为型模式(Behavioral Patterns&…

重启路由器可以解决N多问题?

为什么重启始终是路由器问题的首要解决方案? 在日常的工作学习工作中,不起眼的路由器是一种相对简单的设备,但这仍然是我们谈论的计算机。 这种廉价的塑料外壳装有 CPU、随机存取存储器 (RAM)、只读存储器 (ROM) 和许多其他组件。 该硬件运行预装的软件(或固件)来管理连接…

牛客算法心得——kotori和素因子(dfs)

大家好,我是晴天学长,传智杯的题,一个经典的全排列找最小的问题,需要的小伙伴可以关注支持一下哦!后续会继续更新的。💪💪💪 1) .kotori和素因子 链接:https://ac.nowcod…

使用Redis构建简易社交网站(1)-创建用户与动态界面

目的 本文目的:实现简易社交网站中创建新用户和创建新动态功能。(完整代码附在文章末尾) 相关知识 本文将教会你掌握:1.redis基本命令,2.python基本命令。 redis基本命令 hget:从哈希中获取指定域的值…

Leetcode2661. 找出叠涂元素

Every day a Leetcode 题目来源:2661. 找出叠涂元素 解法1:哈希 题目很绕,理解题意后就很简单。 由于矩阵 mat 中每一个元素都不同,并且都在数组 arr 中,所以首先我们用一个哈希表 hash 来存储 mat 中每一个元素的…

Redis--15--缓存穿透 击穿 雪崩

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 缓存穿透 击穿 雪崩运行速度:1 缓存穿透问题描述:如何解决: 2 缓存击穿问题描述:如何解决: 3 缓存雪崩说明:解决方案: 缓存穿透 击穿 雪崩 问题描述: 由于海量的用…

springboot单元测试关闭日志

在logback中关闭日志 在test目录下新建文件夹resources&#xff0c;新增文件logback-test.xml文件 在logback-test.xml 文件中&#xff0c;添加内容&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <configuration><include resourc…