python分形树-递归
2022/2/20 12:26:26
本文主要是介绍python分形树-递归,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
分形树
- 1. 利用turtle画出分形树
- 2. 绘制分形树丛
1. 利用turtle画出分形树
- 问题描述: 利用turtle画出下图所示的分形树
- 要求:
- 树木主干向上生长
- 分形层数为4,二叉树
- 第一层树枝长度为60,逐层减6
- 左右树枝的倾斜角度不限,最终效果和下图所示大致相同即可
import turtle as t def tree(n,x): if n <= 0: return None else: t.left(30) t.forward(x) tree(n-1,x-6) t.backward(x) t.right(60) t.forward(x) tree(n-1,x-6) t.backward(x) t.left(30) t.left(90) tree(4,60)
结果如下图所示:
2. 绘制分形树丛
一、 修改步骤l中生成分形树的方法:
-
分 型层数改为4~6之间的随机数
-
第一层树枝长改为30~60之间的随机数
二、绘制分形树丛
-
在800X600的屏幕中绘制分形树丛
-
树木数量为 50棵
-
每棵分形树的树根位置为屏幕范围内随机坐标点,树枝允许伸出屏幕窗口外;
-
以屏幕中心垂直线为分界,位于屏幕左侧的树木向左倾斜,位于屏幕右侧的树木向右倾斜;绘制过程瞬间完成(即看不到绘画过程)。
import turtle as t import random def tree(n,x): if n <= 0: return None else: t.left(30) t.forward(x) tree(n-1,x-6) t.backward(x) t.right(10) t.forward(x) tree(n-1,x-6) t.backward(x) t.right(20) def tree2(n,x): if n <= 0: return None else: t.right(30) t.forward(x) tree2(n-1,x-6) t.backward(x) t.left(10) t.forward(x) tree2(n-1,x-6) t.backward(x) t.left(20) screen = t.Screen() screen.setup(800,600) screen.tracer(0) t.left(90) for i in range(50): x = random.randint(-300,300) y = random.randint(-200,200) n = random.randint(4,6) x1 = random.randint(30,60) t.penup() t.goto(x,y) t.pendown() if x>0: tree2(n,x1) else: tree(n,x1) t.update()
结果如下图所示:
这篇关于python分形树-递归的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2025-01-03用FastAPI掌握Python异步IO:轻松实现高并发网络请求处理
- 2025-01-02封装学习:Python面向对象编程基础教程
- 2024-12-28Python编程基础教程
- 2024-12-27Python编程入门指南
- 2024-12-27Python编程基础
- 2024-12-27Python编程基础教程
- 2024-12-27Python编程基础指南
- 2024-12-24Python编程入门指南
- 2024-12-24Python编程基础入门
- 2024-12-24Python编程基础:变量与数据类型