2014-11-14 69 views
0

我目前正在与Myro/Calico和Robotics合作。我试图运行一个分形的递归函数。我正在使用Python。机器人 - 分形的递归函数。

我一直在关注这里的伪代码。 Fractal

到目前为止,我试图实现没有递归的第一步。它运行良好

# 1 foot per 2 seconds. x * 2 = feet desired. 
def fractal(x): 
    waitTime = x*2 
    turnRight(1, 0.825) #90 degree turn 
    forward(1, x/3) #move length/3 steps 
    turnLeft(1, 0.55)#60 degree turn 
    forward(1, x/3) #move length/3 steps 
    turnRight(1, 1.1) #120 degree turn 
    forward(1, x/3) #move length/3 steps 
    turnLeft(1, 0.55) #60 degree turn 
    forward(1, x/3) #move length/3 steps 

虽然这个工程,我的目标是要经过这个递归,但要在每次迭代较小的曲线。我试图做到这一点,但我的机器人没有按照需要移动。

这是我在递归尝试

def fractal(x): 
    waitTime = x*2 
    if (x == 1): 
     forward(x/3) 
    else: 
     (x-1)/3 
    turnLeft(1,0.55) #60 degrees 
    if (x == 1): 
     forward(x/3) 
    else: 
     (x-1)/3 
    turnRight(1, 1.1) #120 degree turn 
    if (x == 1): 
     forward(x/3) 
    else: 
     (x-1)/3 
    turnLeft(1, 0.55)#60 degree turn 
    if (x == 1): 
     forward(x/3) 
    else: 
     (x-1)/3 

我的机器人只能左右转动,但它不是做充分的形状。没有递归的人开始了分形。我只需要递归遍历整个分形。

+0

你是如何调用分什么?从我所看到的这里没有递归。 – user2097159 2014-11-14 17:51:20

+0

我把分形(3)指定我想去的脚。你可以输入任何数字。我试着在我链接的网站上伪造。我将如何进行递归? – user3577397 2014-11-14 17:54:17

+0

只要你知道,'else:(x-1)/ 3'什么也不做。你的意思是做“向前((x-1)/ 3)”还是“x =(x-1)/ 3”或“分形((x-1)/ 3)”? – Kevin 2014-11-14 17:55:11

回答

1

我想这是你想要做的

x = number of interations 
l = lenth(wait time) 
def fractal(x, l): 
    if (x == 1): 
     forward(l/3) 
    else: 
     fractal((x-1), l/3) 
    turnLeft(1,0.55) #60 degrees 
    if (x == 1): 
     forward(l/3) 
    else: 
     fractal((x-1), l/3) 
    turnRight(1, 1.1) #120 degree turn 
    if (x == 1): 
     forward(l/3) 
    else: 
     fractal((x-1), l/3) 
    turnLeft(1, 0.55)#60 degree turn 
    if (x == 1): 
     forward(l/3) 
    else: 
     fractal((x-1), l/3) 
+0

谢谢你,那个工作:) – user3577397 2014-11-14 18:13:56

+1

没问题递归是一个难题,首先包裹你的头。如果你对递归和编程感兴趣,最简单的开始就是斐波纳契。 – user2097159 2014-11-14 18:15:37

+0

我会检查一下,谢谢。 – user3577397 2014-11-14 19:34:56