码丁实验室,一站式儿童编程学习产品,寻地方代理合作共赢,微信联系:leon121393608。
用递归法画图时,程序简单,却常常弄不怎么明白它的过程。这一课我们再来仔细分析一下。
先看这个图,我们叫它是一块手绢或地毯吧。
它的程序是:
我们知道,上图中, “移动边长三分之一步” 的上间一句:“地毯 边长除以 3”, 它是递归法的体现程序。
上图中是边长大于 33 的,边长大于 33 所对应的图是:
我分别列出来:
这个边长是300。
这个边长是100。
这个边长是33.333。
这个边长是11.111。
这个边长是3.704。
看看递归运算时的走法:
当边长是300时,没有参与这种递归,直接画一个正方形。这是边大于100的情形。
当边长是100时,只要边长大于100的三分之一,都会画成边长是100. 为什么? 因为没有达到它的三分之一就不能再平均走到下一个台阶。所以输入99和34都是一样的图。在上图中,就是那两个小的红箭头,从第一个台阶走到第二个台阶,就回归了。
同样当边长是33.333时,只要没达到下一个台阶11.111,所有的设定值的图都是与33一样的。
。。。。。。
我们来看视频,感觉一下台阶的分界线:
如果有下一级,那么上面所有级的线都不会再画,直接画最下级了,但是回归还是要走到上一级的,就是说,画的是最下一级但是格局是每一级的都有。
我们再来慢速看看递归算法运行的轨迹,在拐角处停的时间为什么更长?是因为首先它要结束本级同时要回归到上级,所以时间更长。请看: