内容正文:
第3课
递归算法
课件出自公众号:先见一站上岸;小红书:Hisoka
1
理解递归算法的基本思想,
明白递归算法与递推算法的异同,
能运用递归算法解决实际学习与生活中的问题。
任务卡
课件出自公众号:先见一站上岸;小红书:Hisoka
2
这一天,小红带着棘手的难题来求助小蓝。小红说,她在家里发现了一个上着锁的神 秘的保险箱,妈妈告诉她,保险箱的钥匙可能在一个盒子里。但这个盒子并不是单层的, 这个盒子里,还可能有其他的盒子 ……
一
说一说
课件出自公众号:先见一站上岸;小红书:Hisoka
3
还记得我们曾经学习过的循环结构吗?仿照电饭煲煮饭、同学们刷牙的例子,你能否将小红寻找钥匙的过程画成一个循环结构图呢?
一
说一说
课件出自公众号:先见一站上岸;小红书:Hisoka
4
一
说一说
按照循环结构的思想,小红将找钥匙的过程,简化成了一个循环模型,如图。
小红的循环示意图画的和你的一样吗?
课件出自公众号:先见一站上岸;小红书:Hisoka
5
能不能想出什么方法让“找钥匙”的过程变得简单呢?
二
想一想
小红在“找钥匙”的过程中使用了两个循环,以及两个判断语句,形成了两级嵌套结构,这使得整个循环的方式变得复杂了。
课件出自公众号:先见一站上岸;小红书:Hisoka
6
三
学一学
小红的新方法,相比于之前的方法,有什么不同?变简单了吗?
课件出自公众号:先见一站上岸;小红书:Hisoka
7
三
学一学
盒子里的东西只有两种可能:有钥匙、没有钥匙(都是 盒子)。因此,她对于盒子中的每一个物品,使用同一个循环,即判断所有的东西中是否 有钥匙。如果有钥匙,就结束循环;如果没有钥匙,就说明盒子里的东西都是盒子,则对于新的盒子重新进行判断。精简了流程。
课件出自公众号:先见一站上岸;小红书:Hisoka
8
不断直接或间接调用自身函数或者方法的算法,被称作递归算法。
递归算法是 在计算机科学中, 一种通过重复将问题分解为同类的子问题而解决问题的方法。它通常 把一个大型复杂的问题层层转化,变成一个个与原问题相似的规模较小的问题来求解,递 归策略只需少量的程序,就可描述出解题过程所需要的多次重复计算,大大地减少了程序 的代码量。
什么是递归
课件出自公众号:先见一站上岸;小红书:Hisoka
9
相比于先前学习的递推算法,你认为与本章所学习的递归算法有哪些不同之处?它们之间又有哪些相同之处呢?和同学们分享你的想法。
四
比一比
课件出自公众号:先见一站上岸;小红书:Hisoka
10
在考虑使用递归算法时,我们必须明确,终止递归算法的条件。如“盒子的东西中有钥匙,则跳出循环”。否则,这个循环就有可能一直不断地进行下去。
课件出自公众号:先见一站上岸;小红书:Hisoka
11
你知道著名的斐波那契数列吗?有一位意大利青年,名叫斐波那契,他在他的著作中提出了一个有趣的问题:假设一对刚出生的小兔子,在一个月后就能长大成为大兔子,再过一个月,这两只大兔子就可以生下一对小兔子,并且此后每个月,每一对兔子都可以再生一对小兔,如果所有的兔子 都不死亡, 一年之后, 一共会有多少只兔子?请你尝试用递推的方 法分析这个问题,并且用递归的方法对其进行循环结构的绘制。
练一练
课件出自公众号:先见一站上岸;小红书:Hisoka
12
谢谢聆听!
课件出自公众号:先见一站上岸;小红书:Hisoka
13
$$