【发布时间】:2019-04-14 02:25:31
【问题描述】:
我正在尝试实现 L 系统生成的希尔伯特曲线,利用 python 海龟图形和递归。我的代码似乎适用于递归 n=1 和 n=2 的前两个级别,但除此之外,图形只是纠缠在一起(尽管我能够观察其中的更多模块),我似乎无法掌握这里可能有什么问题,我是否需要一些中间步骤来重新生成希尔伯特模块以进行更深层次的递归?请看我下面的代码,比较简单:
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()
【问题讨论】:
-
如果你喜欢 R,这里是一行代码
n=scan();a=1+1i;b=1-1i;z=0;for(k in 1:n)z=c((w<-1i*Conj(z))-a,z-b,z+a,b-w)/2;plot(z,t="s")只需在 for 循环中更改n,例如for(k in 1:5)z=...这并不能解决您的问题,但以防万一您想四处看看:) -
嗯,我不熟悉 R,所以我不太明白你的代码行是什么,但我会检查一下
标签: python recursion turtle-graphics fractals hilbert-curve