最近我开始学习递归,我注意到有一种叫做分形的东西,我用它做了一棵简单的树。在
但是我有一个问题,关于这个分形的递归概念https://i.imgur.com/RMPfwU2.png
我看到了一些类似的东西,不过是用正方形做成的。在
有人能解释递归吗? 我用Python(turtle)尝试了这个算法
def fractal(start,length,direction,t):
if(length < 10):
return
t.rt(direction)
direction = int(direction/360) # To make it only {90,-90}
t.fd(length)
fractal(start+length,length/2,direction+90,t)
fractal(start+length,length/2,direction-90,t)
t.lt(direction)
fractal(start+length,length/2,direction+90,t)
fractal(start+length,length/2,direction-90,t)
分形的基本形状是一个大字母“H”,在它的四个尖端各有一个较小的版本。所以你基本上要做的就是在turtle中画一个“H”,当你在提示的时候,再次用一半的长度调用
fractal
。请记住,海龟在函数开始时应该始终朝向同一方向,并且在绘制形状后必须返回原点。函数可能看起来像这样:你也可以利用这个事实,即图的两边是对称的:
^{pr2}$虽然不是最快的实现,但它结构紧凑,让您不断猜测下一步的发展方向:
首先,我们画出我们的方式,右上腿H,向内转并递归。一旦我们完成递归,我们继续朝同一个方向旋转,以向后移动手臂。我们不是一直沿着手臂向下移动(这是一个有效的方法),而是回到出发点,但现在我们面对的是相反的方向,所以我们只需重复之前所做的一切,画出H的左下角
一旦完成,我们又回到中心,指向原来的方向,所以我们再次重复整个过程,但是通过否定角度,把我们所有的权利变成左边,反之亦然。这画出了我们的左小腿,然后是右上肢。在
相关问题 更多 >
编程相关推荐