最近在中國(guó)大學(xué)MOOC網(wǎng)站筝闹,跟著北理工嵩天老師團(tuán)隊(duì),學(xué)習(xí)《Python語(yǔ)言程序設(shè)計(jì)》蕉朵。其中崔涂,第5周的思考題,是要實(shí)現(xiàn)一個(gè)深度優(yōu)先的樹(shù)始衅。我的答案如下:
先看實(shí)現(xiàn)效果:
代碼如下:
# 深度優(yōu)先算法
# helen.chan@163.com on Oct. 31th, 2017.
from turtle import Turtle
# l是枝條的長(zhǎng)度
# a是同層枝條之間的角度的1/2
# f是下層枝條長(zhǎng)度與上層枝條的長(zhǎng)度的比率冷蚂,是一個(gè)收斂因子。越大收斂越慢汛闸。
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)
# 主程序是從老師那里抄來(lái)的哦
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()