python - 在 python 中使用基本递归绘制分形时出错
问题描述
所以最近我试图在我目前正在学习的 Python 课程中完成我的作业,并且我试图使用递归和基本的 Python 函数来绘制分形图案。我遇到了我的分形不断变成以下合并的错误:结果图像
当然,想要的结果是一个完整的分形,具有您在最左侧分支上看到的模式。这是我的代码:
def drawStellaFractal(canvas, cx, cy, r, level):
if level == 0:
drawStellaFace(canvas, cx, cy, r)
else:
drawStellaFractal(canvas, cx, cy, r, level-1)
drawStellaFractal(canvas, cx-cx//2, cy-cy//2, r//2, level-1)
drawStellaFractal(canvas, cx+cx//2, cy-cy//2, r//2, level-1)
drawStellaFace 只是为了你在图案中看到的脸,我只是不明白我做错了什么?有人可以指出我的错误吗?
谢谢
解决方案
左侧有效,因为中点总是在接近零时减半。右侧是错误的,因为它在通往无穷大的道路上减半(取决于级别数)。在递归中,子属性是从父属性派生的。对于此代码,应根据父中心确定子中心。
尝试这个
def drawStellaFractal(canvas, cx, cy, r, level):
if level == 0:
drawStellaFace(canvas, cx, cy, r)
else:
drawStellaFractal(canvas, cx, cy, r, level-1)
drawStellaFractal(canvas, cx-r, cy-r, r//2, level-1)
drawStellaFractal(canvas, cx+r, cy-r, r//2, level-1)
推荐阅读
- javascript - Webpack 和环境变量评估?
- docker - 如何在 Docker 中针对本地开发环境运行颤振测试?
- reactjs - Redux - 重复对象名称
- java - 将 ResultSet 返回到另一个函数
- python - 试图点击找到的元素,但据说此时不可点击
- c# - 检测代码克隆在 Visual Studio 2019 中不可用
- javascript - CSS子组件的边框在父组件的边框之上
- swift - 使用 AVAudioPlayer 从包含 utf8 编码字符串的 URL 流式传输音频
- python - 有没有办法一次查找超过 100 个推特状态或查找非常大的数据集的状态?
- amazon-web-services - Electron-Updater 和 AWS S3 存储桶策略 - 错误:HttpError: 403 Forbidden