如何使用乌龟在python中绘制sierpinski地毯

时间:2017-12-15 23:16:51

标签: python recursion graphics turtle-graphics

我正在尝试使用乌龟在python中创建Sierpinski地毯。到目前为止,这是我的代码:

from turtle import *

# Make a screen and a pen
pen = Pen()
screen = Screen()
pen.speed(0)
pen.color('orange')
pen.width(1.5)

def s (n, l):
    for i in range (4):
        s(n-1, l)
        pen.right(45); pen.forward(l); pen.right(45)
        s(n-1, l)
        pen.left(90); forward (l); pen.left(90)
        s(n-1, l)
        pen.right(45); pen.forward(l); pen.left(45)
        s(n-1, l)

然而,每当我运行它时,我都会收到此消息:

line 17, in s
    s(n-1, l)
  [Previous line repeated 990 more times]
RecursionError: maximum recursion depth exceeded

我尝试使用if i in range(4):,但这也不起作用,我哪里错了?

1 个答案:

答案 0 :(得分:1)

您需要“停止条件”才能停止递归。

例如:

json_encode()

我不知道算法,但我用这段代码创建了地毯。

我只使用 if n == 0: # "stop condition" # draw or exit else: # recursions # execute some recursions trace(0)来更快地绘制它。

update()

enter image description here

维基百科:Sierpinski carpet