我试图实现一个L系统生成的Hilbert曲线,利用pythonturtle图形和递归。我的代码似乎适用于前两个递归级别n=1和n=2,但除此之外,图形只是纠缠在一起(虽然我可以观察到它们中的其他模块),而且我似乎无法理解这里可能出现的问题,我是否需要一些中间步骤来重新生成Hilbert模块以实现更深层次的递归?请参阅下面我的代码,它相对简单:
import turtle
def Hilbert_curve(A,rule,t,n):
if n>=1:
if rule:
t.left(90)
Hilbert_curve(A,not rule,t, n-1)
t.forward(A)
t.right(90)
Hilbert_curve(A, rule,t, n-1)
t.forward(A)
Hilbert_curve(A,rule,t, n-1)
t.right(90)
t.forward(A)
Hilbert_curve(A,not rule,t, n-1)
t.left(90)
else:
t.right(90)
Hilbert_curve(A,rule,t, n-1)
t.forward(A)
t.left(90)
Hilbert_curve(A,not rule,t, n-1)
t.forward(A)
Hilbert_curve(A,not rule,t, n-1)
t.left(90)
t.forward(A)
Hilbert_curve(A, rule,t, n-1)
t.right(90)
def main():
A=10
t=turtle.Turtle()
my_win=turtle.Screen()
n=2
rule=True
Hilbert_curve(A,rule,t,n)
my_win.exitonclick()
main()
{cd1>是你的问题。函数中的
rule
已经颠倒过来了,因此您需要将rule
与then子句相同:但是,如果我们将
^{pr2}$rule
从一个布尔值改为一个数字,parity
,即1或-1,然后将parity
乘以角度,我们可以消除if
语句中的两个子句之一:{a1}
相关问题 更多 >
编程相关推荐