我正在尝试使用乌龟在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):
,但这也不起作用,我哪里错了?
答案 0 :(得分:1)
您需要“停止条件”才能停止递归。
例如:
json_encode()
我不知道算法,但我用这段代码创建了地毯。
我只使用 if n == 0: # "stop condition"
# draw or exit
else: # recursions
# execute some recursions
和trace(0)
来更快地绘制它。
update()
维基百科:Sierpinski carpet