import turtle def draw_branch(branch_length): if branch_length > 5: #限定绘制的树枝(包括树干、树枝和树叶)长度至少大于5 if(branch_length<=20): #如果长度小于20,即可判定是树叶,绘制成绿色 turtle.color('green') else: turtle.color('brown') turtle.forward(branch_length) #绘制树干 turtle.right(20) draw_branch(branch_length-15) #绘制每个节点分叉右侧的树枝 turtle.left(40) draw_branch(branch_length - 15) #绘制每个节点分叉左侧的树枝 if (branch_length > 20): #如果长度大于20,即可判定是树干或者树枝,绘制成棕色 turtle.color('brown') turtle.right(20) turtle.backward(branch_length) #左右侧树枝绘制好,返回节点处 def main(): turtle.left(90) turtle.penup() turtle.backward(150) turtle.pendown() turtle.color('brown') draw_branch(80) #树枝(其实是树干)初始长度为80 #设定后面的树枝随着树的增长长度依次减15 turtle.exitonclick() if __name__=='__main__': main()
最后的效果图如下:
注:如果代码中的递归部分理解起来有点困难,最好是运行一下,根据绘图的过程理解会比较容易。