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