Scratch3.0----递归函数(1)

                                                                      递归函数

  欢迎来到我的博客!天波易谢,寸暑难留。今天我们来看一下程序中经常用到的“递归函数”。

  1.  什么是递归呢?感觉很难的样子!

       我们先拿小故事举一个例子:庙里有个老和尚和一个小和尚,有一天老和尚对小和尚说:“从前有座山,山里有座庙,庙里有        个老和尚和一个小和尚,有一天老和尚对小和尚说:“从前有座山,山里有座庙,庙里有个老和尚和一个小和尚.........””

       ( 这个故事?,我可能讲到老也讲不完??,我还年轻嘞?。)

 

        通常我们讲递归,也会拿俄罗斯套娃举例子,是一种大娃娃套小娃娃的玩具(如图1.1),娃娃里面又包含了一个娃娃,

        和我们上面讲的故事很像,故事里面包含着这个故事,讲下去无穷无尽停不下来。

1.1

          “递归函数”呢就是:函数自己直接或间接调用自己本身

 

  2.  同学们有没有感觉到递归和循环很像呢,都是一直在重复,但我们不能让它一直重复下去,要不然就像我们小和尚的

       故事一样,永远也讲不完,我们必须要给程序一个停止积木,在适当的时候停止这个循环

       我们分别用循环和递归做一个小程序体会一下。我们让小猫从1数到10。

       

Scratch3.0----递归函数(1)_第1张图片 2.1  重复执行

 

Scratch3.0----递归函数(1)_第2张图片 2.2  递归

 

  3.    为了表现出递归的思想,我们来做一个复杂的程序体验一下,我们来做一个“雪花曲线”。

         "雪花曲线"是从一个正三角形变来的,①、先画一个正三角形,把它的每一条边三等分;②、我们取三等分的中间一段

         为边,向外在画正三角形,并把底边去掉;③、重复上面两步产生更多的三角形(如图3.1)。

Scratch3.0----递归函数(1)_第3张图片 3.1 雪花曲线

          我们认识了“雪花曲线”,那如何用程序画出来呢?我们先来分析一下。由于“雪花曲线”是从三角形变化来的,

          那么我们是不是会画一条边了,剩下两条边就都可以了。我们先设置一个变量“级别”,这个变量代表我们三角

          行变化的次数,“级别”为0,我们就是画一个正三角形的一条边,级别为1,我们就在正三角形边的基础上变化

          一次,级别越高我们画的图形也就越复杂。(如图3.2)

Scratch3.0----递归函数(1)_第4张图片 3.2

            我们可以从中找到规律,0级为一条直线;1级在0级(1/3长度)处向左转了60°,(1/3长度)后又向右转

            120°,(1/3长度)后又向左转了60°;2级在1级(1/3长度)处向左转了60°,(1/3长度)后又向右转了120°,

           (1/3长度)后又向左转了60°.........我们找到了规律,就开始写程序了。

              首先我们定义一个函数(如图3.3),其中“级别”和“边长”作为形参。然后我们编写程序的结束条件,也就是

              递归的出口,让它不一直重复下去。然后我们就按照上面的规律,调用自身函数,来画下一级别的边。如图3.3

 

3.3 定义函数

          

Scratch3.0----递归函数(1)_第5张图片 3.4

               然后我们的主程序,用画笔调用这个函数,画三条边就好了。完整的程序(如图3.5)。

               运行结果(如图3.6)。

                

Scratch3.0----递归函数(1)_第6张图片 3.5 完整程序

 

Scratch3.0----递归函数(1)_第7张图片 3.6 运行结果

   今天我们认识了递归,关于递归我们可以总结为两点:

                  ⭐  递归就是函数自己直接或间接调用自己本身。

                  ⭐  使用递归我们一定要设置一个递归出口,否则就成了死循环。

   

你可能感兴趣的:(scratch,Scratch3.0)