14. 遞歸
在”海龟的学习课程“这一课中,我们知道用命令”to“可以教海龟学会执行一个新的命令
我们也可以用命令”to“来教海龟学习参数,比如
to advance :thesize fd :thesize
现在,海龟接受了一个新的命令,它一定很想知道参数值是多少,比如:advance 40 让海龟学习一个新的命令“advance”,这个命令带有一个参数叫“thesize“
在上一步中,我们创建了一个带参数的新命令"square“,现在让我们来检验一下这个命令是否可以执行。你可以输入参数不同的命令,比如: square 60 , square 80
等等。 输入命令:square 100当一个命令可以自我递增循环,我们就叫做递归命令
我们使用递归命令时,必须有一个停止条件(我们不希望无限循环命令)和带参数的命令。
是不是听上去很复杂?别担心,我们会一步一步来讲解。
现在我们先教海龟学习正方形递归命令。
教海龟执行如下的命令: to square :size if :size >90[stop] repeat 4 [ fd :size rt 90] square :size + 20 end我们先看一下海龟执行命令square 40的情况
首先,我们来看一下命令square 40,这个命令表示square的参数值是40,。然后根据我们创建的条件命令“if”,我们要问问海龟:这个参数值大于90(:size > 90)吗?如果大于90,海龟需要停止执行命令;如果小于90,海龟要继续执行命令,画一个边长40的正方形
然后,海龟要执行递归命令 :size = :size + 20
现在,参数“size"值是60,60< 90,所以海龟要继续画一个边长60的正方形
然后,海龟执行递进命令 :size = :size + 20
现在,参数“size"值是80, 80< 90,所以海龟要继续画一个边长80的正方形,然后继续执行递进命令 :size = :size + 20
现在,参数“size"值是100,100> 90,这个时候海龟就会停止执行命令
输入命令:square 40