极客小将

您现在的位置是:首页 » scratch编程资讯

资讯内容

递归算法在scratch学习中的运用

极客小将2020-12-07-
递归算法应用      学习scratch编程的同学,到了进阶课程阶段会接触到递归的概念。      但是很多人很难理解什么是递归。     因为正常人的思维,一般是迭代(iteration),比如人都是先学习加减法

递归算法应用

     学习scratch编程的同学,到了进阶课程阶段会接触到递归的概念。

     但是很多人很难理解什么是递归。

    因为正常人的思维,一般是迭代(iteration),比如人都是先学习加减法,再学习乘除法,最后学习微积分。归纳法其实就是一种迭代,从一个简单的起点,推广到一般情况。

   而递归(recursion),则是一种反人类的逆向思维,会让程序变得非常之简洁。

递归算法简介

递归算法是一种直接或者间接调用自身函数或者方法的算法,其实质是把问题分解成规模缩小的同类问题的子问题,然后递归调用方法来表示问题的解。递归算法对解决一大类问题很有效,它可以使算法简洁和易于理解。

同学们小时候经常念的:从前有座山,山里有座庙,庙里有个老和尚给小和尚讲故事!故事是什么呢?“从前有座山,山里有座庙,庙里有个老和尚给小和尚讲故事!故事是什么呢?

如此循环往复,是不是像极了scratch里的重复执行模块?

递归算法在scratch里的实际运用

     其实重复执行除了可以通过循环结构实现外,还可以通过另一个强大的技术实现,那就是递归。

以画正三角形为例,通常我们是这样画的:

upload/article/images/2020-12-07/f19708d6865409b34bc62cbe1db7783a.jpg

绘制三角形需要循环3次

如果用递归算法怎么做?

这里需要运用到scratch里的更多模块

upload/article/images/2020-12-07/b7e32ce1a963134ec1e0e6aac6f7ba98.jpg

通过更多模块,我们创建新的功能块,给新功能块命名,并且可以自定义新功能块的含义。

upload/article/images/2020-12-07/65aac8fce4ccde5f00a431ae214208e8.jpg

我们将循环3次而成的正三角形重新打包,定义为新的功能块,最终程序改为:

upload/article/images/2020-12-07/2dc57f9ef497168ade3340a81b5a358a.jpg

同学们理解了吗?

递归思想的运用非常之广泛,来凤凰机器人一起探索编程的奥秘吧!

递归算法小练习

让我们加点难度吧?下图怎么用递归算法画出来?

upload/article/images/2020-12-07/7dd602172a9bf99b7beb35c4155cd5c6.jpg

声明:本文章由网友投稿作为教育分享用途,如有侵权原作者可通过邮件及时和我们联系删除

网友点评

共有5条评论来说两句吧...

在线客服