(共18张PPT)
递归算法
学习目标
认识算法的基本概念。
了解算法的描述方法。
循环结构的算法构建。
一、导入新课
手工洗衣流程“故事板”
二、从递归流程认识算法
算 法
算法(algorithm):在有限步骤内解决问题所使用的方法。通常是以一步接一步的方式来详细描述如何输入或预定初始值转化为所要求的输出的过程,或者说,算法是对计算装置中执行的计算过程的具体描述。
二、从递归流程认识算法
洗衣机的洗衣流程是对手工洗衣流程
的模拟,是对“递归算法”的实现,
其中嵌入了“单片机”。“单片机”
通过预先保存的程序,控制洗衣机一
步一步完成递归过程。
三、算法的描述
你能描述出洗衣机“快洗”模式的洗衣流程吗?
应该怎么描述执行的细节呢?
以第②步洗涤为例。
左边的洗衣流程,还不能称为洗衣机
的“递归算法”,因为其每一步没有
定义洗衣机明确执行的细节,不满
足算法的特征。
①进水
开始
②洗涤
③排水
⑥漂洗
⑤进水
④脱水
⑧脱水
⑦排水
⑨鸣叫
结束
洗衣机“快洗”模式的洗衣流程
三、算法的描述
三、算法的描述
自然语言是人们日常生活中使用的语言。用自然语言描述的算法通俗易懂,但是描述用词要做到准确、统一,无二义性,且算法的控制结构和嵌套层次要清晰明确。
自然语言
2.1电动机正传30秒;
2.2电动机停2秒;
2.3电动机反转30秒;
2.4电动机停2秒;
2.5计数器加1,跳转2.2执行;
2.6洗涤结束。
三、算法的描述
伪代码是一种算法描述语言,它是用介于自然语言和程序设计语言之间的人工语言来描述算法。伪代码书写方便、格式紧凑、表达精炼,比较容易被开发人员理解。
伪代码
i = 0
While i < 5
电动机正传30秒
电动机停2秒
电动机反转30秒
电动机停2秒
i = i + 1
三、算法的描述
流程图由一些简单的框图组成,框图用来表示算法的步骤。
流程图
洗涤开始
计数器清零
计数<5
电动机正转30秒
停2秒
电动机反转30秒
停2秒
计数器加1
洗涤结束
是
否
分别用流程图和代码来描述医院“自助挂号算法”,并比较不同算法描述方法的优缺点。
活动:
三、算法的描述
四、循环结构
循环结构是描述重复执行操作的控制结构,它解决了重复操作多次或按条件进行控制的通用性问题。
循环结构
循环体
洗涤开始
计数器清零
计数<5
电动机正转30秒
停2秒
电动机反转30秒
停2秒
计数器加1
洗涤结束
是
否
四、循环结构
循环结构是描述重复执行操作的控制结构,它解决了重复操作多次或按条件进行控制的通用性问题。
实现循环结构的语句
要构建循环结构需要解决两个问题:
一是重复要做什么事,
二是如何控制循环。
①循环控制变量的初值;
②循环控制变量的终值;
③在循环体中使循环控
制变量由初值变化的语
句。
四、循环结构
算法1
1.令s=1;
2.s=sx1;
3.s=sx2;
……
51.s=sx50。
算法2
1.令s=1;
2.令i=1;
3.循环当i小于等于50;
……
3.1 s=sxi;
3.2 i=i+1。
开始
S=1,i=1
i<=50
S=Sxi,i=i+1
输出S
结束
否
是
例1:求50!(50!=1X2X3X……X50)
四、循环结构
While循环(不确定次数循环)
while<条件> :
<语句块>
不确定循环次数循环会一直保持
循环操作,直到特定循环条件不
被满足时结束。
例1:求50!(50!=1X2X3X……X50)
s=1
i=1
while i<=50:
s=s*I
i=i+1
print(s)
四、循环结构
求50!(50!=1X2X3X……X50)
确定次数循环
For<循环控制变量> in <遍历结构>:
<语句块>
确定次数循环指循环结构对循
环次数有明确定义,循环次数
采用遍历结构中元素的个数来
体现。
s=1
for i in range(1,51):
s=s*i
print(s)
四、循环结构
例2.计算1+3+5+7+……+99的结果(100以内的所有奇数)
s=0
for i in range(1,100,2):
s=s+i
print(s)
range(start,stop,step)
开始,默认从0开始
停止,不包含此数值
步长,默认为1
谢谢