什么是递归?
一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法被称为递归,递归做为一种算法在程序设计语言中广泛应用。 那么这句话怎么理解呢?我们来scratch来做一个例子看一下。
由于雪花曲线是从三角行不断变换得到,因此我们绘制雪花曲线之需要关注一条边的变化规律即可,想办法画出来,另外两条边都是完全一样的。下面我们从0级开始,看看这个三角形底边是如何一级一级发生变化的。
0级(三角形):画直线
1级:0级(1/3长度)右转60度 0级(1/3长度)左转120度 0级(1/3长度)右转60度 0级(1/3长度)
2级:1级(1/3长度)右转60度 1级(1/3长度) 左转120度 1级(1/3长度) 右转60度 1级(1/3长度)
3级:2级(1/3长度)右转60度 2级(1/3长度) 左转120度 2级(1/3长度) 右转60度 2级(1/3长度)
依次类推:
4级:3级(1/3长度)右转60度 3级(1/3长度) 左转120度 3级(1/3长度) 右转60度 3级(1/3长度)
n级:n-1级(1/3长度)右转60度 n-1级(1/3长度) 左转120度 n-1级(1/3长度) 右转60度 n-1级(1/3长度)
我们发现了这样的规律那么在程序中该怎么写呢?这里就用到了我们开始所讲到的递归。
打开scratch->更多积木->添加新的积木块:我们自定义一个模块“绘制边”这里需要两个参数,一个是变化的级数,另一个是长度,如果是0级就直接绘制一个线段停止,否则就按照上面的规律:级数-1级(1/3长度)右转60度 级数-1级(1/3长度)左转120度 级数-1级(1/3长度)右转60度 级数-1级(1/3长度)
这样这个程序的核心部分就完成了,代码很简洁,不过理解起来有点难,需要多去想想理解。
画边的程序做好了,我们只需要像画三角形一样,拼接起来即可。接下来我们来完成这个程序,画出这个曲线吧。