#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2019/4/29 8:42
# @Author : rao
# @File : big_tree.py
# @Software: PyCharm
# @desc : 分型树
import turtle
def main():
distance = 100
angle = 20
step = 25
turtle.left(90)
# 将起始点下移150
turtle.penup()
turtle.backward(200)
turtle.pendown()
# 画笔颜色
turtle.pencolor('grey')
draw(distance, angle, step)
turtle.exitonclick()
def draw(distance, angle, step):
if distance > 0:
# 右侧
setColor(distance, step)
turtle.forward(distance)
turtle.right(angle)
draw(distance - step, angle, step)
# 左侧
setColor(distance, step)
turtle.left(angle * 2)
draw(distance - step, angle, step)
# 返回之前的树枝
setColor(distance, step)
turtle.right(angle)
turtle.backward(distance)
def setColor(distance, step):
if distance - step <= 0:
# 最后一个树枝设为绿色
turtle.pencolor('green')
else:
turtle.pencolor('grey')
if __name__ == '__main__':
main()
----------------------------------------------------------
绘制过程是先把右侧都绘制完,再绘制左侧,然后再返回。
我们来分析draw这个函数
def draw(distance, angle, step):
if distance > 0:
# 右侧
setColor(distance, step)
turtle.forward(distance)
turtle.right(angle)
draw(distance - step, angle, step) # 1
# 左侧
setColor(distance, step)
turtle.left(angle * 2)
draw(distance - step, angle, step) # 2
# 返回之前的树枝
setColor(distance, step) # 3
turtle.right(angle)
turtle.backward(distance)
原始参数 distance=100, step=25
把代码分为三个部分,标记为1,2,3
当distance > 0 时,都是进入 #1 里面去了,层次为3,此时最右侧的边全部画完了,
现在还处在第3层,于是....
一定要有层的概念,先从外圈进到最里圈,然后从最里圈退回到最外圈的过程。
python-递归函数-分型树
猜你喜欢
转载自blog.csdn.net/raoxiaoya/article/details/92371363
今日推荐
周排行