Scratch3.0-递归函数
从前有座山,山里有座庙,庙里有两个和尚,老和尚对小和尚说:“从前有座山,山里有座庙,庙里有两个和尚,老和尚对小和尚说:“从前有座山,山里有座庙,庙里有两个和尚.........””
通常我们讲递归,也会拿俄罗斯套娃举例子,是一种大娃娃套小娃娃的玩具(如图1.1),娃娃里面又包含了一个娃娃,和我们上面讲的故事很像,故事里面包含着这个故事,讲下去无穷无尽停不下来。
“递归函数”就是:函数自己直接或间接调用自己本身。
同学们有没有感觉到递归和循环很像呢,都是一直在重复,但我们不能让它一直重复下去,要不然就像我们小和尚的故事一样,永远也讲不完,我们必须要给程序一个停止积木,在适当的时候停止这个循环。
首先,我们分别用循环和递归做一个小程序体会一下。我们让小猫从1数到10。
2.1 重复执行
2.2 递归
其次,我们再用递归做一个求和的案例,求1+2+3+4+...+99+100的和。
最后,再举个例子,用画笔画如下有趣的图形。
角色的起始方向是90°。当绘制一个正三角形后,角色移动12步,并逆时针旋转10°。随后过程检查角色的新方向:如果角色未面向90°,过程则重新调用自己,继续绘制下一个正三角形;否则递归结束,过程停止。最终的绘制结果如下图所示。