版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、初中信息技术Python编程一一算法【兔子总数有多少】你有没有站在两面相对的镜子中间,尝试一下同时照两面镜子会出现什么 情景?镜子里会有千百个你,而真实的你只有一个,那千百个你都来 源于你的存在,这是一种递归现象。生活中应用递归思想的例子也有很多,如益智玩具九连环、汉诺塔等。在本工程中,我们将围绕递归算法的程序实现,探究递归的基本工作机制, 尝试优化程序。在程序设计中,使用递归算法通常需要定义递归函数,通过对该函数的调 用来获得最终解。通过本节的学习,你将掌握以下技能:了解递归思想的基本思路和运行过程掌握递归函数的定义方法会用递归算法解决实际问题专题一:跟踪递归的运行过程通过将问题重复分解为同
2、类的子问题来解决问题的方法,称为递归。常见的递归都是经过屡次分解把问题转化为有直接解法的特殊情况,得到 解后再回归到更大问题求解,最终得到较大或更大问题的答案。i.i递归过程下面通过一个累乘过程的数据跟踪检测小实验,来体会递归算法是如何工 作的。假设一个自然数n ,累乘是将从1到n的所有自然数相乘,乘积m=l x2x3x4x5x.xn。#用递归累乘def fact(n):#自定义函数printC当前n) #跟踪显示n,可省略if n=l:#终止条件return 1#结束递归else:#递归条件f=n*fact(n-l) #调用递归print(”当前乘积::f)#跟踪显示累乘的积return f
3、 #返回乘积10 print(“乘积m=,fact(7) #调用递归控制台前前前前前前前前前前前前前积序 当当当当当当当当当当当当当乘程前前前前前前前前前前前前前积序 当当当当当当当当当当当当当乘程n=n=乘乘乘乘乘乘m=运7 6 5 4 3 2工八八八八八八 , 1、 二 二 i- - 1- - - 1- - - 1束 结 一仃在程序中:def fact(n)是自定义函数的头部,定义以下缩进的程序完成特定功能。n 是函数的参数。自定义函数可以利用print语句显示其执行结果,也可以在表达式运算中 使用。通过程序的运行,观察变量跟踪检测点的设置及数据变化,会发现求解过程如下:fact(7)7*
4、 fact(6)7*(6* fact(5)7*(6* fact(5* fact(4)7*(6* fact(5* fact(4* fact(3)7*(6* fact(5* fact(4* fact(3*fact(2)7*(6* fact(5* fact(4* fact(3* fact(2* fact(l)讨论.递归中,自定义函数如何深入展开?2 ,数据运算顺序有何特点?然而,计算累乘的过程却是按2*1再到3*2、4*6这样的顺序进行的。1.2递归算法的条件递归算法解决问题的核心在于递归函数的构建。程序运行时,由于递归函 数不断调用自身,如果没有设置终止条件,递归调用会形成无限循环。规范的递归函数
5、必须由两个条件组成:终止条件和递归条件。符合终止条件终止函数调用,符合递归条件那么函数继续调用自身。递归函数的规范形式如下:def函数名(参数列表):if条件表达式: #终止条件语句return值(或表达式) #可省略else:#递归条件包含自身函数名(参数列表)的语句递归函数的终止条件和递归条件,没有固定的先后顺序,只要保证具备这 两个条件即可。专题二:探究递归算法的优势使用递归优化程序,会让程序代码变得直观简洁、一目了然。著名的斐波那契数列,又称为兔子数列,因以兔子繁殖为例而得名。某饲养场引进一对刚出生的新品种兔子,这种兔子第2个月长为成年兔, 从第3个月起一对成年免每个月都新生一对幼兔。
6、每对兔子都经历这样的出生、 成长、繁殖过程。假设所有兔子都不死,到第12个月时,该饲养场共有兔子多 少对?2.1迭代算法迭代算法的核心是通过将迭代表达式不断重复执行,用变量的旧值推出新 值,直到完成指定计算。#用迭代法求兔子数列#幼兔和成年兔第i月当月的数量分别用a、b表示a=l #幼兔第1月当月的数量(单位:对)b=0 #成年兔第1月当月的数量(单位:对)print(第 %d 个月兔子共 %d 对“(l,a+b)n=12#总月数for i in range(2n+l):t=b#先把上月成年兔数量存一下910910b=a+b#本月成年兔数量;上月幼兔数量+成年兔数量a=t#本月新生幼兔数量=上
7、月成年兔数量11prints第%d个月兔子共计%d对“%(i,a+b)控制台对对对对对又第1个月兔子共1 第2个月兔子共计 第3个月兔子共计 第4个月兔子共计 第5个月兔子共计 第6个月兔子共计 第7个月兔子共计 第8个月兔子共计 第9个月兔子共计 第10个月兔子共计 第11个月兔子共计 第12个月兔子共计 程序运行结束2.2递归算法兔子数列形如1 , 1 , 2 , 3 , 5 , 8 , 13 , 21,34如果设f为该数列的第i项,当i大于2时,f的值是f(i-l)+f(i-2)o通过定义递归函数完成数列的推算,代码例如如下图。#用递归算法求“兔子数列力def f(n):if n=211
8、:print (“优秀”)elif x=195:print (“良好”)elif x=155:print(“及格”)else:print (不及格”)控制台请输入初一男生立定跳远成绩(单位:厘米):160 及格程序运行结束2 ,定义函数实现多人成绩判断。进行多名学生成绩判断时,判断条件要屡次重复使用,程序语句过多会出现阅读不便、程序冗长易出错等问题。如果修改判断条件,修改较多比拟麻烦。使用自定义函数,可以屡次调用,简捷、高效。#多人跳远成绩判断程序def f(x):345678910if x = 211:return 优秀”elif x = 195:return 良好”elif x = 155
9、:return ”及格”else:return 不及格11 for i in range(ll):#主程序,判断10名学生的成绩12 m = int(input(请输入初一男生立定跳远成绩(单位:厘米):”)13 print(等级::f(m) #调用函数时参数m的值传入函数内部进行应用控制台请输入初一男生立定跳远成绩(单位:厘米):100 等级:不及格请输入初一男生立定跳远成绩(单位:厘米):220 等级:优秀请输入初一男生立定跳远成绩(单位:厘米):200 等级:良好 请输入初一男生立定跳远成绩(单位:厘米):口巩固与提高1、反复调用(引用)自身直到某个条件匹配的算法是()A.排序算法B.分治算法 C迭代算法 D.递归算法 2、以下函数名中
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 大学生村官考试试题库(附答案)
- 2025年小学语文第一轮面试题库及答案
- 2025年中国移动安徽公司春季校园招聘笔试参考题库附带答案详解
- 2026四川投资集团秋招面笔试题及答案
- 医院病案管理试题及答案
- 2026四川港航投资集团招聘试题及答案
- 中医药治疗慢性结肠炎的试题带答案
- 2025山西红杰人才集团有限公司招聘10人笔试参考题库附带答案详解
- 2025山东滨州市无棣县新联交通集团有限公司权属公司招聘4人笔试参考题库附带答案详解
- 2026水产养殖技术员校招面试题及答案
- 普外科科主任年终述职
- 中医内科学:肺胀
- 分级护理标准解读
- 2025年全国统一高考语文试卷(全国一卷)含答案
- 肯德基副经理养成课程
- 职业生涯规划教师评价标准
- XX问题技术归零报告
- AEO贸易安全培训
- 2024年中国靛蓝染料市场调查研究报告
- GB/T 4706.85-2024家用和类似用途电器的安全第85部分:光辐射皮肤器具的特殊要求
- 智慧人社大数据综合分析平台整体解决方案智慧社保大数据综合分析平台整体解决方案
评论
0/150
提交评论