【教程】python递归三部曲(基于turtle实现可视化)- 0 递归三原则

python之turtle模块实现递归可视化 《Python数据结构与算法分析》第二版 turtle模块介绍 顾名思义,可以用turtle模块创建一只小乌龟(turtle)并让它向前或向后移动,或者左转或右转。把小乌龟当作一支画笔,画笔可以抬起或放下,当放下时,画笔会沿着移动轨迹画出线条。还可改变画笔粗细或颜色。 爬行: forward(n) backward(n) 转向:right(a) left(a) 抬笔放笔:penup() ... 阅读详情

大家好,我是大爽歌
本教程为本人在b站投稿的视频教程对应的文字版(正在更新中)
视频较详细,文本较简洁,大家选择一个看就好
本文主要通过三个实例来帮助大家理解递归(其展示动画已上传B站):
谢尔宾斯基三角形(Sierpinski Triangle)
汉诺塔(Tower of Hanoi)
迷宫探索(Maze Exploring)
本文代码已上传到github:https://github.com/BigShuang/recursion-with-turtle
本文参考文献:
Problem Solving with Algorithms and Data Structures using Python
turtle官方文档:
中文:https://docs.python.org/zh-cn/3.6/library/turtle.html
英文:https://docs.python.org/3.6/library/turtle.html

递归三部曲:

〇、介绍递归及三原则
一、谢尔宾斯基三角形
二、汉诺塔
三、迷宫探索

〇、递归及递归三原则

首先,什么是递归?
第一次接触这个概念的新人,往往很迷惑,直接去查定义的话:

定义:递归(英语:Recursion),又译为递回,在数学与计算机科学中,是指在函数的定义中使用函数自身的方法。递归一词还较常用于描述以自相似方法重复事物的过程。例如,当两面镜子相互之间近似平行时,镜中嵌套的图像是以无限递归的形式出现的。也可以理解为自我复制的过程。

也会有一种好像明白又好像不明白的感觉。
在这里插入图片描述
为了让大家能够更简单直接的理解递归,
我这里做一个粗暴的比喻(暴论):
递归即套娃。
在这里插入图片描述
给大家讲个趣味小故事(雾)
并不是什么从前有座山,山里有个庙,庙里有个老神仙在那讲故事。
而是上古年间,愚公移山时期。

愚公说: 虽我之死,有子存焉; 子又生孙,孙又生子; 子又有子,子又有孙;

这里面的子又生孙,孙又生子其实就是个递归,如下图所示
在这里插入图片描述
当然这个递归有点小问题,那就是会
子子孙孙无穷匮(我们可以认为这是个bug)
解决这个bug也很简单
引入一个智叟工具人打断复读就可以了
在这里插入图片描述

最后言归正传

如果通过上面的一番说(gui)明(che),你还是不太明白什么是递归的话
没关系,我们暂时不太需要完全弄懂递归是什么
只要先弄懂递归需要怎么去操作就好
当我们弄懂了递归应该如何操作时,自然就理解了递归。

递归三原则

1,要有个基础条件,来退出递归
2,递归过程要向1中的基础情况靠拢
3,要不断的调用自身

原文
All recursive algorithms must obey three important laws:
A recursive algorithm must have a base case.
A recursive algorithm must change its state and move toward the base case.
A recursive algorithm must call itself, recursively.
出处:https://runestone.academy/runestone/books/published/pythonds/Recursion/TheThreeLawsofRecursion.html

第一次接触递归三原则的人可能会有些不是很明白的感觉,不知道每一步具体是要怎么做。
没关系,建议直接去看看我后面的三个实战,相信看完三个实战后在回过头来看递归三原则,自然而然就理解了。

Python之turtle可视化递归探索迷宫 maze.txt内容 ++++++++++++++++++++++ + ++ ++ + + + ++++++++ + + + ++ + +++++ ++ + +++++ +++ + + + ++++ + + + +++++ + + + + + +++++ +++ + + ++ + + ... 阅读详情

相关推荐

Python数算:递归可视化之汉诺塔的动画实现(海龟turtle)

【欢迎关注微信公众号“陶晨毅”,代码之外的资料分享学习打卡站】 代码最多能运行7阶汉诺塔,不过稍微改一下整体参数还是可以做到“任意”阶数的。主要用了递归和栈的想法,用turtle实现。 相关资料: turtle中文文档:https://docs.python.org/zh-cn/3/library/turtle.html turtle英文文档:https://docs.python....

陶晨毅的学习笔记 7985

python用turtle库绘画树形,python数据结构递归树

大家好,小编来为大家解答以下问题,python用turtle库绘画树形,python数据结构递归树,今天让我们一起来看看吧!

2301_81900494的博客 701

Python数据结构与算法(4.2)——递归的可视化

递归函数是直接调用自己或通过一系列语句间接调用自己的函数。递归在程序设计有着举足轻重的作用,在很多情况下,借助递归可以优雅的解决问题。虽然使用递归可以快速的解决一些难题,但由于递归的抽象性,使递归难以掌握。为了更好的理解递归函数背后的思想,本节主要通过可视化方式来了解递归函数的执行步骤。

盼小辉丶的博客 3万+

如何在Python中使用turtle库递归调用画出二叉树

2、左边执行完成后执行右边。

aikelili_的博客 892

海龟 (turtle) 画图终极实战:小海龟挑战大迷宫游戏

文章目录1. 需求分析2. 系统设计2.1 游戏功能结构2.2 游戏业务流程2.3 系统预览3. 系统开发必备3.1 系统开发环境3.2 文件夹组织结构4. 主窗口设计5. 游戏地图的设计6. 走迷宫设计7. 关卡设置7.1 初始化关卡信息7.2 实现过关提示8. 总结 迷宫本来是指错综复杂的通道,很难找到从其内部到达入口或从入口到达中心的道路,十分复杂难辨,人进去后不容易出来的建筑物。由于迷宫充满挑战性和娱乐性,后来人们发明了迷宫游戏。这种游戏可以在纸上玩,也可以在计算机中玩,受到了多数人的青睐。 本文将

XAMO Lab|代码、调试与复盘笔记 9907

利用递归法和Turtle类实现迷宫寻路的动态展示

本程序来源于《Problem Solving with Algorithms and Data Structures》一书的141页,可以运行,但部分代码有误,详细分析见http://blog.youkuaiyun.com/pospro/article/details/47154881

递归与Python Turtle分形树绘制详解

在本项目中,我们将通过Python的tsstle库深入解析递归的概念,特别是如何用递归绘制分形树。这将帮助我们理解递归函数的执行过程和内存管理。一、项目概述1.1递归定义递归是指一个函数直接或间接地调用自身的过程。它通常分为两个部分:基础条件:指向函数结束的条件。递归条件:指向更小规模问题的解决方式。1.2项目目标本项目的目标是创建一个使用递归绘制分形树的程序,让我们通过可视化形式理解递归过程中的函数调用栈和内存管理。

优质创作者: 人工智能技术领域 对于有一定基础的 MATLAB和Python带具体需求都可以详谈 MATLAB和Python可以提供代码调试服务加油 谢谢 你的鼓励是我前行的动力 谢谢支持 加油 谢谢 977

python 使用turtule绘制递归图形(螺旋、二叉树、谢尔宾斯基三角形)

插图工具使用Python内置的turtle模块,为什么叫这个turtle乌龟这个名字呢,可以这样理解,创建一个乌龟,乌龟能前进、后退、左转、右转,乌龟的尾巴朝下,它移动时就会画一条线。并且为了增加乌龟画图的艺术价值,可以改变尾巴宽度和尾巴浸入墨水的颜色。 1.递归绘制螺旋 先用我们让乌龟以line_len长度前进,然后向右旋转90°,然后缩短line_len长度递归调用draw_spiral函数 import turtle my_turtle = turtle.Turtle() my_win = turtle.Screen() def draw_spiral(tur, line_len):

python画椭圆-Python易学就会(五)turtle绘制椭圆与递归

前两篇文章基本涵盖了turtle的大部分功能,同时也借由对turtle功能的展示,厘清了Python的一些语法特点,以利于新手入门。但是短短几个例子,阐述得还是有限,这里再展开两个知识点,一方面对turtle做个补遗,另一方面把Python语法的大框架过完一遍。第一个是画椭圆。上一节中描述了如何用turtle画一个圆,或者是一段弧线,但是在很多图形中需要用到椭圆,如何画出一段优美的椭圆,是本篇的第...

weixin_37988176的博客 1556

西门子 G120 变频器报文

G120报文

mmxxoo_xxmmp的博客 8080

使用Hyper-V使用下载下来的macOS安装引导安装macos

然后关闭工具返回安装界面选择第二个reinstall,选择119g那个硬盘。我的资源上传了:macOS Monterey on Hyper-V.7z。设置固件的启动顺序,引导安装盘放到第一位,mac安装110g放第二。选择disk utility格式化那个110g。下载解压的macos引导挂载到虚拟硬盘。其他设置安全禁用,检查禁用,集成都选中。新建一个虚拟硬盘装mac,110g。

viviliving的专栏 3024

【教程】python递归三部曲(基于turtle实现可视化)-三、迷宫探索

1、迷宫探索 本教程为本人在b站投稿的视频教程对应的文字版 视频较详细,文本较简洁,大家选择一个看就好 迷宫如下图,蓝色点为起点,绿色点为终点 点击查看迷宫探索动画 迷宫文本已上传github(如下图),点击这里查看 本地新建一个text文件夹,把这些txt放在text文件夹里面 这里我们那301.txt为例,文本内容如下: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ...

大爽老师的博客 2712

Qt+OpenGL+Cesium三件套:打造高性能3D GIS桌面应用的5个关键点

本文深入探讨了如何利用Qt、OpenGL和Cesium数据规范构建高性能桌面级3D GIS应用。文章聚焦于五个关键点:架构选型、OpenGL渲染优化、3D Tiles数据解析与调度、内存与多线程管理,以及高级特性实现,旨在帮助开发者在C++生态中打造不依赖网络、运算能力更强的重型3D地理信息客户端。

weixin_28197941的博客 381

【教程】python递归三部曲(基于turtle实现可视化)-一、谢尔宾斯基三角形

1、谢尔宾斯基三角形 谢尔宾斯基三角形(Sierpinski triangle), 是一种如图所示的分形 点击观看谢尔宾斯基三角形绘制动画(Sierpinski Triangle) 这里分析一下其绘制过程 1、绘制一个三角形 2、取三角形的三边中点, 以每两个中点及其所在边共有的顶点, 三个一组,组合成三个小三角形, 对三个三角形进行绘制, 如下图所示,分别为ADF,DBE,FEC。 3、对2中...

大爽老师的博客 6007

Android Studio打包全攻略---从入门到精通

初出茅庐 手动打包怎么手动打包项目写完了,现在需要把应用上传到市场,问题出现—怎么把代码变成.apk(Android的可安装文件)。 1. 创建签名文件 2. 填写好签名参数 3. 生成APK 注意:签名的密码和密匙的密码注意保管,不要忘了,签名文件别泄漏了,也别搞丢了为什么要打包我最开始就有这个疑问,我们的代码不是点了下运行按钮就直接安装到手机上了吗,我们在在项目Project

我早就想,要这样载着你,翻山越岭 2万+

跟着团子学SAP CO:结果分析各评估方法计算逻辑概览 RA Valuation Method Overview KKA1/KKA2/KKA3

在大部分企业财务月结时,结果分析是必不可少的一环,通过结果分析系统可按照设定的评估方法及相关配置自动计算在制品(WIP)、主营业务成本、主营业务收入等等。 在结果分析中最重要的是根据业务需求选择合适的评估方法,目前SAP共提供15种评估方法,今天针对每一种方法计算逻辑及常用的业务场景进行介绍: (1)基于收入的评估方式(带利润实现) Revenue-Based Method with Profit Realization 第一种方式的计算是基于实际收入与计划收入的占比推算应结转的主营业务成本,如果当期累计的

Lucas1211的博客 1万+

利用Python实现递归算法可视化

利用Python实现递归算法可视化 递归算法可视化有利于我们更清晰的理解递归算法。 在本文中,首先介绍递归函数以及递归算法的思想,然后,我们将利用Python来实现递归函数的可视化。 一、递归函数(递归算法)简介 递归的基本思想就是把规模大的问题转化为规模小的相似的子问题来解决。 递归式方法可以被用于解决很多的计算机科学问题,因此它是计算机科学中十分重要的一个概念。 另外,递归一定要有结束的条件。 二、递归可视化的实现方法 Python中自带有turtle模块,该模块是Python自带的绘图工具,因此我们可

江月的博客 1万+

有限元分析-静力学分析-与分析解对比-——以阶梯轴的静力分析为例——静态结构分析

150mm,a=300mm{a=300mm}a=300mm,b=200mm{b=200mm}b=200mm,L=1000mm{L=1000mm}L=1000mm,F=300kN{F=300kN}F=300kN,材料为45,弹性模量E=2.1e11Pa{E=2.1e11Pa}E=2.1e11Pa,泊松比v=0.28{v=0.28}v=0.28,屈服应力δs=355MPa{δ_s=355MPa}δ。使用line body生成的模型,可以选择自动划分网格的,WB会将以梁单元将其划分完成,例如图2所示。

qq_15963745的博客 66

python turtle_汉诺塔:python-turtle递归可视化

1 说明=====1.1 汉诺塔:(又称河内塔)问题是源于印度一个古老传说的益智玩具。1.2 大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。1.3 用python3.8的turtle来实现递归可视化。2 效果图3 感谢...

weixin_39968801的博客 488

虚拟机安装VMware Tools

单击虚拟机-->安装VMware Tool 安装之后会有一个VMware Tools硬盘,里面有VMware Tools.tar.gz的压缩包 按照提示解压它,然后执行vmware-install.pl安装VMware Tools 将安装包放到/tmp目录下。可以直接拽过去,也可以使用cp或者mv命令 进入tmp文件目录并解压此文件包 cd /tmp ...

afei001 620

[UVM]UVM TLM2.0简介及应用实例分析

本文介绍了TLM2.0在UVM中的实现与应用。TLM2.0作为SystemC模型间的核心传输机制,相比TLM1.0提供了更丰富的特性,包括双向阻塞/非阻塞接口、时间标记和统一数据包。文章详细解析了TLM2.0在UVM中的接口实现方式,包括socket类型定义、数据传输机制以及时间标记处理。通过一个具体实例,展示了如何在UVM组件中使用TLM2.0的initiator和target socket进行数据传输,并说明了标准数据包格式和精确时间标记的优势。最后指出TLM2.0在UVM中的实现主要是为了与Syste

元直的博客 5397

python中turtle什么意思,Python中的turtle初探

turtlePython自带了一个turtle库,就像名字turtle说的那样,你可以创建一个turtle,然后这个turtle可以前进,后退,左转,这个turtle有一条尾巴,能够放下和抬起,当尾巴放下的时候,turtle走过的地方就留下了痕迹,也就是这只画笔的原理。下面的表格是基本的一些turtle的方法,这里简单列举了一点。命令解释turtle.Screen()返回一个singleton o...

weixin_29816241的博客 1万+

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

python用turtle画二叉树_递归可视化:使用turtle库画分形树(二叉树)

turtle是Python3重要的内置标准库,它能够进行基本的图形绘制,以LOGO语言为基础。turtle库绘制图形的基本框架:模拟海龟在坐标系中爬行,其爬行轨迹形成了绘制图形。刚开始时海龟位于画布正中央,坐标为(0,0),前进方向为水平右方。画笔运动常用函数如下:前进、后退:forward(n) 、backward(n)转向:right(angle)、left(angle)移动到画布中的特定位置...

weixin_39979167的博客 1990

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

使用python中的Turtle库使汉诺塔可视化

一.汉诺塔简介 汉诺塔:汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。 二.Turtle库绘制汉诺塔 1.接下来,我们用python中的Turtle库绘...

weixin_44046046的博客 1749

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

运用Turtle实现汉诺塔的可视化运行(递归算法)

运用Turtle实现汉诺塔的可视化运行(递归算法) 汉诺塔问题又名河内塔问题,是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。 由题意得,此问题需要运用递归算法解决。 现...

weixin_30853329的博客 463

数据结构与算法Python版 递归与可视化

介绍递归“三定律”和实现分析。介绍递归可视化:分形树和谢尔宾斯基三角形。

分享、交流、合作 903
下一篇: 【教程】python递归三部曲(基于turtle实现可视化)-一、谢尔宾斯基三角形
大爽歌
博客等级 码龄9年 422粉丝 92原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值