知:猴子吃桃的故事
猴子摘了一堆桃,第一天吃了一半,还嫌不过瘾,又吃了一个。第二天又将剩下的桃子吃了一半零一个。以后每天如此,到第10天清早,只剩下一只了。那么最初它摘了多少桃子呢?小猴子抓耳挠腮也算不出来,正好碰上回家的小猫,就把这道题告诉给小猫,请小猫帮他解决这个问题。小猫稍加思考就算出来了,马上把结果告诉了小猴子。小猴子听到结果后,高兴得跳起来,并感谢了小猫的帮助。
思:程序设计
这是一道典型的数学应用题,我相信不用写程序你也可以算得出来,但是你如果想让计算机来计算,那就必须将你自己思考的过程告诉计算机,也就寻找有效的算法。对本题来说,你可能会这样计算:既然知道了最后一天桃子的数量,我把它加上一,再乘以2,就是第九天(倒数第二天)的桃子数量,如果将第十天桃子数量设置为X,第九天就可以表示为(x+1)2;那么第八天呢?应该是重复上面的方式,((x+1)2+1)*2,第七天也是如此,这样计算九次,最终你会得到第一天的桃子数量——重复计算9次,看出来了吗?用 Scratch 提供的重复指令循环计算9次不就解决了吗?
本程序角色设计如下:
行:编程实现
1、新建 Scratch 项目,背景选择库中的“Forest”,保留小猫角色,添加角色库的 Monkey(猴子),并导入一个外部的桃子图片作为新角色:
2、为小猴子编写代码,主要实现的是说出问题并向小猫发出“求助”的消息:
3、小猫按照我们在“程序构思”中设计的思路进行计算,告知小猴子结果:
4、小猴子得到答案,高兴得跳了起来:
5、程序完成了,小猫计算出来的结果是1534,这个结果对不对呢?你可以按照程序逻辑手工验算一下,或者你可以反过来用1534每天去掉一半再减一的方法,看看第十天是不是剩下一个桃子?
悟:总结与拓展
本节我们解决问题的算法称为“递推法”,这是一种简单的算法,即通过已知条件,利用特定关系得出中间推论,直至得到最终结果的算法。比如我们从第十天的数字推出第九天,再推出第八天的数量、第七天的数量……一直到题目要求的结果。通过本题你除了理解如何使用递推法,还应该总结一下用递推法编程解决数学应用题的思路,主要包括:
- 认真阅读题目,理解题意,获得已知条件和要计算的结果;
- 找出推导中间结论的规律,设计算法;
- 按照设计的算法编程;
- 测试和验算:多运行几次看看是否能够得到正确结果,第二次运行的结果与第一次一样吗?程序计算的结果与手工计算(如果可能的话)一样吗?
- 迭代:想想还有没有更好的解法,用更少的代码实现相同的逻辑?
这五个步骤将帮助你的解题过程更顺利。