(共28张PPT)
第19课
猴子吃桃+李白喝酒
学习目标
巩固与扩展
项目讨论
逻辑编程
1
2
3
4
1
用编程解决经典数学问题,体会编程与数学深度结合之美。今天用编程思维解决2个经典数学题目。学习“逆推”和“递归”思维。
2
3
4
巩固“变量”、“等号、减号” 、“广播” 、“碰到指针”等脚本
学习灵活使用“询问回答”、“重复执行直到” 等脚本
综合应用所学脚本完成编程项目并扩展
新脚本:
巩固脚本:
1.本节课用到的角色
2.本节课用到的背景
Monkey2
无需背景
《1-猴子吃桃》
1.猴子摘了一堆桃子,第一天吃了一半,还嫌不过瘾,又吃了一个。第二天又将剩下的桃子吃了一半零一个。以后每天如此到第10天的时候,只剩下了一个桃子,问最初有多少支桃子?
2.你们知道这在程序上是什么么?
这个咱们可以从第10天开始计算,一点一点往前倒推
也可以用程序递归思维来解题,一会儿咱们详细讲解。
用程序来解答这道题,在程序上就是递归,一会儿给大家详细介绍。
《1-猴子吃桃》
1.猴子吃桃问题讲解
1.猴子吃桃问题
猴子摘了一堆桃子,第一天吃了一半,还嫌不过瘾,又吃了一个。第二天又将剩下的桃子吃了一半零一个。以后每天如此到第10天的时候,只剩下了一个桃子,问最初有多少个桃子?
条件:
①、猴子每天吃总数一半+1个
②、第10天剩了1个
求:
最初有多少个桃子?
1.猴子吃桃问题讲解
1.猴子吃桃问题
第10天
只剩1个桃子
第9天
一半
1个
第十天的桃子
第8天
一半
1个
第九天的桃子
第九天=(第10天桃子数+1)×2
第八天=(第9天桃子数+1)×2
一半
一半
咱们可以简单推算出第9天、第8天的桃子数量,然后寻找规律。第9天:4个桃;第8天:10个桃
1.猴子吃桃问题讲解
1.猴子吃桃问题
第10天
1个
第9天
4个
第8天
10个
第1天
(1+1)×2
(4+1) ×2
第8天
22个
(10+1) ×2
…
…
a个
(a+1) ×2个
((a+1)×2+1) ×2个
(a+1) ×2
((a+1) ×2
+1) ×2
(((a+1) ×2+1) ×2
+1)*2
…
1.猴子吃桃问题讲解
2.设置变量
第10天
第9天
第8天
执行1次
执行2次
1.猴子吃桃问题讲解
2.编写桃子数量的程序
第1天
执行9次
1.猴子吃桃问题讲解
3.编写猴子计算桃子数量的程序
说出总共的桃子数量
1.猴子吃桃问题讲解
4.递归的初步认识
递归其实和循环是非常像的,循环都可以改写成递归,递归未必能改写成循环,这是一个充分不必要的条件。
程序调用自身的编程技巧称为递归
1.猴子吃桃问题讲解
5.用递归算法扩展
猴子摘了一堆桃子,第一天吃了一半,还嫌不过瘾,又吃了一个。第二天又将剩下的桃子吃了一半零一个。以后每天如此到第100天的时候,只剩下了一个桃子,问最初有多少个桃子?
9改成99
就是正确答案
2.猴子出题的程序
1.编写猴子出题程序
比较简单,孩子们自己打字;打字慢的同学寻求老师帮忙
1.本节课用到的角色
2.本节课用到的背景
李白
窗户旁
《2-李白喝酒》
杏花村
1.李白街上走,提壶去买酒。遇店加一倍,见花喝一斗。三遇店和花,喝光壶中酒。诚问酒壶中,原有多少酒。这段话什么意思?
3.咱们正常做题应该采用什么方法呢?
4.咱们小朋友可以喝酒么?
意思是李白提酒壶在街上走,遇到酒店就把壶里的酒增加一倍,遇到花就喝掉一斗酒.这样遇到三次酒店和花之后,酒被喝光了
数学方法:逆推法
酒是不能喝的,不过背诵唐诗是可以的呢
《2-李白喝酒》
1.李白喝酒问题解析
1.问题解析
李白提酒壶在街上走,遇到酒店就把壶里的酒增加一倍,遇到花就喝掉一斗酒.这样遇到三次酒店和花之后,酒被喝光了
条件:
①、3次遇到酒店和花,酒喝完
求:
最初有多少酒?
②、遇到酒店增加一倍,也就是×2
③、遇到花喝一斗酒,也就是-1
1.李白喝酒问题解析
2.逆推
3-遇店
最后李白酒喝完,所以最后一次碰到的一定是花
0+1=1
3-遇花
0
1÷2=0.5
2-遇店
2-遇花
1-遇店
1-遇花
0.5+1=1.5
1.5
1.5÷2=0.75
0.75
0.75+1=1.75
1.75
1.75÷2=0.875
1
0.5
0.875
*遇到酒店增加一倍,也就是×2
*遇到喝一斗酒,也就是-1
1.李白喝酒问题解析
2.程序逆推
设置变量,名称为“酒的变量”。一开始将酒的容量设为0
0
1.5
0.75
1.75
1
0.5
0.875
1.李白喝酒问题解析
2.程序逆推
3遇店和花,所以总共执行了3次
1.李白喝酒问题解析
3.李白的总程序
程序计算完成以后,让李白说出最后的计算结果
容量单位
总程序
Q1:猴子摘了一堆桃子,第一天吃了一半,还嫌不过瘾,又吃了一个。第二天又将剩下的桃子吃了一半零一个。以后每天如此到第48天的时候,只剩下了一个桃子,问最初有多少个桃子?以下程序对么
A1:错误,重复执行48次应该是47次
Q&A
Q2:逆推法是数学解题中很重要的方法,在程序中也是,大家都可以说一说自己的理解?
A2:当逆推的数量太多的时候,咱们不能很简单的算出最终的结果,这个时候咱们就可以编写好程序交给咱们的电脑来重复工作
Q&A
(1)
(2)
结合题目好好理解,从数学上,也就是从最后的已知条件去倒推最开始的数值,回去之后好好想想这节课的逻辑
知识点巩固
逆推法
递归
程序调用自身的编程技巧称为递归
明明回家以后自己盲编《猴子吃桃》的程序,请问他有几处错误?( )
A
B
源码测试
0处
1处
C
2处
C
3处
答案:
解析:
咱们手动输入的乘号,不具备运算的条件,不可以执行运算的指令。
B
源码测试