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

网友投稿 2019-10-15 12:54

递归算法应用

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

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

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

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

递归算法简介

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

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

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

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

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

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

https://cdn.china-scratch.com/timg/191017/1254461603-0.jpg

绘制三角形需要循环3次

如果用递归算法怎么做?

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

https://cdn.china-scratch.com/timg/191017/12544GK6-1.jpg

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

https://cdn.china-scratch.com/timg/191017/12544H554-2.jpg

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

https://cdn.china-scratch.com/timg/191017/12544KM9-3.jpg

同学们理解了吗?

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

递归算法小练习

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

https://cdn.china-scratch.com/timg/191017/12544G5S-4.jpg

--end--

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