递归应用之分形树构建
分形树,顾名思义,每一支树都是一样的,类似于完全二叉树,子树和母树完全一样。所以可以用递归来实现。
思路:所以画一棵树时,画完主干话分支,因为是一样的,所以画分支的过程和画主干的过程完全一样,其实就是一个缩小版的主干。这样一层层递归,直到达到终止条件。
先简单的思考一棵树,只有两层,即只有两个分支。过程是:先画主干,画完主干,则再画右分支,画完右分支,退回到分叉点,然后再画左分支。
t.forward(branch_len)
# 此时海龟的方向为垂直向上,所以右分支只需向右转20度即可
t.right(20)
t.forward(branch_len - 15)
t.backward(branch_len - 15)
# 此时海龟的方向是右偏20度,而左分支是左偏20度,所以需要左转40度
t.left(40)
t.forward(branch_len - 15)
接下来,再思考一下有三层的树。此时,画完主干,画右分支,那么画完右分支后马上画左分支吗?可以想象,以最短路径的目的简单思考,并且有规律的画,肯定不是这样的,这样会重复走很多个主干。用递归的思想,画完分支后,继续看还能不能继续画分支,能画则继续递归,不能画则退出当前递归,继续运行。
def tree(branch_len):
# 递归结束条件,当