可以这样子来理解递归作图

像前面所提到的“作图递归”历来都是使大家感到非常抽象非常困难的。其实所有的这一类型的图形递归题都能使用在林老师编著的《MSWLogo讲义Plus》第四章第130页开始讲解的“学会使用递归模式标识图”这样的思维方式来分析理解。所有的递归图形我们一眼看上去,就能找到图形中的“递归起点”、“递归点”。有些更复杂的图形中还有“插花点”。这些“点”使用以下图形来标识:
这里原有的程序是这样子的:
to dg
:x
if
:x=0[stop]
circle 50
fd 100 dg :x-1
rt 90 fd 100 dg
:x-1
rt 90 fd 100 rt 90 fd 100 rt
90
end
为了便于分析,必须将原来程序中的“递归点”单独“择”出来、分离出来,整理成这个样子:
to dg
:x
if :x=0[stop]
;递归终止条件
circle 50
;以当前点为圆心画一个半径50的圆圈
fd 100
;前进100从A到达B点
dg :x-1
;递归点
rt 90 fd 100
;转向,前进到B点
dg :x-1
;递归点
rt 90 fd 100 rt 90 fd 100 rt 90
;画出完整的正方形并到达A点
end
上面的程序用递归标识图画出来的框架图形是这样子的:
这个递归模式图的“框架”其实就是 dg 1
画出来的基础图形,但是在“起点”和程序中 dg :X-1
处有“递归点”的符号。LOGO画图是是有方向感的,那个箭头的方向就是“当时”的图形指向。
如果有多重递归,就是在“递归点”上重复地调用整个框架图形叠依次加在 dg 1
基础图形之上形成的。下图是递归叠加的示意图。
这样的递归图形叠加是有方向感的。上面的图形可以仔细琢磨。
再次强调的是:递归叠加图形是有方向感的。 dg 3
的图形如下:
加载中,请稍候......