logo语言中的重复命令与尾递归
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
PU RT 90 FD :A LT 90 FD :A + :A / 2
PD STAMPOVAL :A / 2 :A / 2 PU BK :A + :A / 2 RT 90 FD :A LT 90
BB :A / 2
END
to ZFX :N :B REPEAT :N[REPEAT 7[FD :B RT 90] RT 90] END TO TAI :N :B IF :N<1 THEN STOP ZFX :N :B PU FD :B LT 90 FD :B*:N BK :B/2 RT 90 PD TAI :N-1 :B END
(每层正方形边长比是:0.707) TO FY :B IF then STOP REPEAT 4[FD :B RT 90]
REPEAT 36[RT 5 FD :B/2*0.174 RT 5] FY :B*0.707 END 执行:FY 100
TO BB :A IF :A < 2 STOP PD STAMPRECT 2 * :A :A
⑴、位置不变、方向改变。
⑵、位置改变、方向不变。 ⑶、位置改变、方向也改变。 ⑷、位置不变、方向也不变。
⑴、位置不变、方向改变。
TO ZFX11 :B :N IF :N<1 STOP REPEAT 4[FD :B RT 90] RT 90 ZFX11 :B :N-1 END ? ZFX11 100 4 TO ZFX12 :B :N IF :N<1 STOP REPEAT 4[FD :B RT 90] RT 90 ZFX12 :B/2 :N-1 END ? ZFX12 100 4
10 cs repeat 12[repeat 9[rt 5 fd 30*0.174 rt 5] repeat 36 [rt 5 fd 5*0.174 rt 5] repeat 9 11 cs lt 18 repeat 5[fd 40 rt 72] rt 36 repeat 5[fd 64 rt 144] 12 cs repeat 5[repeat 5[fd 50 rt 72]fd 100 rt 72] 13 Repeat 5[repeat 3[fd 20 rt 90 fd 20 lt 90 ]rt 360/5]
重复命令与尾递归
重复命令的嵌套:为绘制各种复 杂的有规律的组合图形提供非常简单 方法。
重复命令的嵌套
1
2
正多边形的旋转
正多边形嵌套 8
3
不同图形的相互嵌套 10
4
不规则的图形组合 13
8 cs repeat 9[pd lt 45 repeat 4[fd 20 rt 90]rt 45 pu fd 28 rt 360/9 pd]
尾递归的四步曲
1、条件判断 2、画基本图形 3、找递归着点
4、尾递归
递归点的概念:为了方便图形的作图, 我们把重复图形的插入点称为递归点
TO S :X
IF :X<10 THEN STOP (条件判断) REPEAT 3 [FD :X RT 120] (画基本图形)
FD :X/2 RT 60 (找递归着点)
⑷、位置不变、方向也不变。
TO ZFX41 :B :N IF :N<1 STOP REPEAT 4[FD :B RT 90] ZFX41 :B :N-1 END ? ZFX41 100 4 TO ZFX42 :B :N IF :N<1 STOP REPEAT 4[FD :B RT 90] ZFX42 :B/2 :N-1 END ? ZFX42 100 4
3 10 9 8
2
7
6
5
4
3
2
1
1
FD :B*:N BK :B/2 FD :B*(:N-1) FD :B/2
4 1 10
3 2
9
3
8
4
7
5
6
6
5
7
4Hale Waihona Puke 8392
10 11 1
1
2
FD :B*(:N-1) BK :B/2 FD :B*(:N-2) FD :B/2
to hu :n make "r 10 fd 30 lt 90 repeat :n[repeat 54 [rt 5 fd :r*0.174 rt 5] lt 180 make "r :r-0.8] end to thl :n :m make "t 0 repeat :m[hu :n pu home pd make "t :t+360/:m rt :t] end
⑵、位置改变、方向不变。
TO ZFX21 :B :N IF :N<1 STOP REPEAT 4[FD :B RT 90] FD :B ZFX21 :B :N-1 END ? ZFX21 100 4 TO ZFX22 :B :N IF :N<1 STOP REPEAT 4[FD :B RT 90] FD :B ZFX22 :B/2 :N-1 END ? ZFX22 100 4
8 to kx2 repeat 8[fd 30 rt 90 fd 15 rt 90 fd 30 lt 135] end
重复命令的组合类型 ⑴、位置不变、 方向改变。
1
2
⑵、位置改变、 方向不变。
2 1
REPEAT 4[REPEAT 4[FD 100 RT 90]RT 90] REPEAT 4[REPEAT 4[FD 50 RT 90]FD 50]
⑶、位置改变、方向也改变。
TO ZFX31 :B :N IF :N<1 STOP REPEAT 4[FD :B RT 90] FD :B LT 90 ZFX31 :B :N-1 END ? ZFX31 100 4 TO ZFX32 :B :N IF :N<1 STOP REPEAT 4[FD :B RT 90] FD :B LT 90 ZFX32 :B/2 :N-1 END ? ZFX32 100 4
TAI 10 20
TO SJX :N :B REPEAT :n[REPEAT 3[FD :B LT 120] FD :B] END TO TAI2 :N :B IF :N<0 THEN STOP SJX :N :B PU LT 120 FD :B LT 60 FD :B*(:N-1) BK :B/2 LT 180 PD TAI2 :N-2 :B RT 90 TAI2 11 20 END
TO ZFX :B :N IF :N<1 THEN STOP REPEAT 6[FD :B RT 90] ZFX :B-10 :N-1 END
CS ZFX 100 9
to ta :b if :b<20 then lt 90 fd 10 rt 90 repeat 18[rt 5 fd 10*0.174 rt 5] stop repeat 5[fd :b rt 90] repeat 3[fd :b rt 120] fd 10 lt 90 ta :b-20 end
S :X/2 (尾递归) END
执行:LT 30 S 100
编一递归过程,画出如下图。(10分) (提示:大圆是小圆半径的0.65倍) to yuan :r :n if :n<1 then stop repeat 36[rt 5 fd :r*0.174 rt 5] pu rt 90 fd :r*2 rt 90 pd yuan :r*0.65 :n-1 end
⑶、位置改变、 方向也改变。
1
2
⑷、位置不变、 方向也不变。
▲
REPEAT 4[REPEAT 4[FD 50 LT 90]FD 50 RT 90] REPEAT 4[REPEAT 4[FD 50 RT 90]]
尾递归的变幻规律
与“重复命令”编写类同。注意分析海龟 的位置和方向的不同变化,规律性大致有四种 基本组合图形。
16 repeat 10[fd 50 rt 90 fd 25 lt 90 bk 50 rt 360/10]
repeat 8[lt 30 repeat 3[fd 40 rt 120] rt 30 pu fd 40 pd rt 360/8]
5 cs lt 90 repeat 6[fd 40 lt 90 repeat 18[lt 5 fd 20*0.174 lt 5] lt 90 pu fd 6 cs rt 90 repeat 5[repeat 3[fd 60 lt 120] fd 60 rt 72]