【发布时间】:2018-06-02 10:08:55
【问题描述】:
我正在尝试理解递归函数,它们看起来很复杂。到目前为止,我唯一了解的是他们需要成为一个基本案例,并且它基于归纳证明。到目前为止,程序员如何思考简单的基本情况已经超出了思考范围。仅使用一行基本案例在书中解决了示例分形。在谢尔宾斯基三角形中,我需要这么多行代码。好吧,现在我离它很近了,但仍然遥不可及。下面是适用于订单 0 和 1 的代码,但对于更高的订单,它会增加更多空间。我知道这不是 python 代码,但这是我能写的最好的。
import math, turtle
window=turtle.Screen()
window.title('Sierpinski')
window.bgcolor('lightblue')
alex=turtle.Turtle()
def sierpinski(a,t,size):
if a==0:
for i in range(3):
t.forward(size)
t.left(120)
else:
sierpinski(a-1,t,size/3)
t.forward(size/3)
sierpinski(a-1,t,size/3)
t.forward(size/3)
t.left(120)
t.forward(size/3)
sierpinski(a-1,t,size/3)
t.forward(size/3)
t.left(120)
t.forward(size*2/3)
t.left(120)
sierpinski(3,alex,200)
window.mainloop()
是的,有点长,我的思路还是不太清楚
- 谁能解释我的代码有什么问题?
- 如何使它更 Pythonic?
【问题讨论】:
标签: python recursion turtle-graphics fractals