最近在中国大学MOOC网站,跟着北理工嵩天老师团队,学习《Python语言程序设计》。其中,第5周的思考题,是要实现一个深度优先的树。我的答案如下:
先看实现效果:
代码如下:
# 深度优先算法
# helen.chan@163.com on Oct. 31th, 2017.
from turtle import Turtle
# l是枝条的长度
# a是同层枝条之间的角度的1/2
# f是下层枝条长度与上层枝条的长度的比率,是一个收敛因子。越大收敛越慢。
def tree(head, l, a, f):
if l > 5:
head.forward(l)
q = head.clone()
head.left(a)
q.right(a)
tree(head, l*f, a, f)
tree(q, l*f, a, f)
# 主程序是从老师那里抄来的哦
def main():
p = Turtle()
p.color("Pink")
p.pensize(5) # 偶是粉红控,^_^
p.hideturtle()
p.speed(9) # 速度, 10最快,0最慢。
p.left(90)
p.penup()
p.goto(0,-200)
p.pendown()
t = tree(p, 110, 65, 0.618)
main()