【教程】python递归三部曲(基于turtle实现可视化)-二、汉诺塔

Python实现汉诺塔 分清楚形参和实参,变来变去的是实参,也就是我们刚开始传入的'A' , 'B' , 'C'三个值,他们通过形式参数 'x' , 'y' ,'z' 来进行传递。此时的n=2,不等于1所以程序会进行第二次调用,继续执行else下面的代码块也是第一行代码Hanoi(n-1,x,z,y)第一次调用的代码 Hanoi(n-1,x,z,y)执行完毕,会接着执行第一次调用的print(x,'-->',z)递归的含义是等到最底层的代码执行完毕,一层一层的往上面返回,要明白代码的具体执行过程。的预期寿命据说也就是数百亿年。 阅读详情

递归三部曲:

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

1、汉诺塔

本教程为本人在b站投稿的视频教程对应的文字版
视频较详细,文本较简洁,大家选择一个看就好

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

抽象成数学问题如下:
有三根相邻的柱子,标号为A,B,C
A柱子上从下到上按金字塔状叠放着n个大小不同(下面的大于上面)的圆盘
要把所有盘子一个一个移动到柱子C上(每次移动时,同一根柱子上小盘子都要在大的圆盘上面)
点击观看移动动画
n=7

2、思路分析

移动过程

A塔是圆盘出发的塔,称之为起点塔
C塔是圆盘最终要达到的塔,称之为目标塔
B塔起辅助中转作用,称之为中转塔
那么各种层数n下,圆盘移动过程分析如图
在这里插入图片描述

代码

首先,需要添加方法moveTower来绘制指定层数的谢尔宾斯基三角形

def moveTower(height, fromPole, withPole, toPole):
	"""
	:param height: 汉诺塔高度——层数,设为N
	:param fromPole: 出发的柱子(起点塔A)
	:param withPole: 经过的柱子(中转塔B),起辅助作用
	:param toPole: 要到达的柱子(目标塔C)
	"""

然后我们再分析下moveTower方法应该怎么写
1、只有一层的话,直接将圆盘1从起点塔A移动到目标塔C
否则的话
2、将圆盘1到n - 1看作一个整体,从起点塔A借助目标塔C移动到中转塔B
3、再将圆盘n从起点塔A移动到目标塔C
4、将圆盘1到n - 1看作一个整体,从中转塔B借助起点塔A移动到目标塔C
为了实现上面四步,我们需要添加一个辅助方法
moveDisk(diskIndex,fromPole,toPole) : 移动指定层圆盘diskIndex,从fromPole出发,到达toPole
我们先通过简单的控制台输出实现汉诺塔,代码如下

def moveDisk(diskIndex, fromPole, toPole):
	print_str = 'Move disk %s form %s to %s' % (diskIndex, fromPole, toPole)
	print(print_str)

def moveTower(height, fromPole, withPole, toPole):
	"""
	:param height: 汉诺塔高度——层数,设为N
	:param fromPole: 出发的柱子(起点塔A)
	:param withPole: 经过的柱子(中转塔B),起辅助作用
	:param toPole: 要到达的柱子(目标塔C)
	"""
	if height == 1 :
		moveDisk(1, fromPole, toPole)
	else:
		moveTower(height-1, fromPole, toPole, withPole)
		moveDisk(height, fromPole, toPole)
		moveTower(height-1, withPole, fromPole, toPole)

if __name__ == '__main__':
	moveTower(3, "A", "B", "C")

运行结果如下

Move disk 1 form A to C
Move disk 2 form A to B
Move disk 1 form C to B
Move disk 3 form A to C
Move disk 1 form B to A
Move disk 2 form B to C
Move disk 1 form A to C

然后我们结合代码回顾一下递归三原则
如图所示:
在这里插入图片描述

3、可视化实现

要实现可视化,则
1要绘制两个形状:塔,圆盘
2要移动绘制后的形状
代码实现思路为:
先定义塔、圆盘对应的形状画笔,在通过移动画笔实现形状的移动
最终代码如下

import turtle
 
# ==============
#  常量设置
# ==============
N=3 # 汉诺塔层数限制
 
BasePL=12   # plate的大小基数,修改这个能够调整plate的大小
TowerP=5    # Tower的线宽
TowerW=110  # Tower的底座宽度
TowerH=200  # Tower的高度
TowerSpace=260  # Tower的之间的距离,从中心到中心
HORIZON=-100    # Tower的底座高度,用于定位
# 动画速度,5是比较适中的速度
PMS=1
 
# 优化处理
Isjump=True
 
POLES={
    "1": [],
    "2": [],
    "3": [],
}
PLATES=[] # 存储所有圆盘对象
 
# 塔的颜色
LineColor="black"
# 多个盘子的颜色
FillColors=[
    "#d25b6a",
    "#d2835b",
    "#e5e234",
    "#83d05d",
    "#2862d2",
    "#35b1c0",
    "#5835c0"
]
# 建立窗体
SCR=turtle.Screen()
# SCR.tracer()
SCR.setup(800,600) #设置窗体大小
 
 
# 设置圆盘形状
def set_plate(pi=0):
    _pi=pi+2
    t = turtle.Turtle()
    t.hideturtle()
    t.speed(0)
    t.penup()
    t.begin_poly()
    t.left(90)
    t.forward(BasePL*_pi)
    t.circle(BasePL, 180)
    t.forward(BasePL * 2 * _pi)
    t.circle(BasePL, 180)
    t.forward(BasePL * _pi)
    t.end_poly()
    p = t.get_poly()
    pname='plate_%s'%pi
    SCR.register_shape(pname, p)
 
 
# 设置塔柱形状
def set_tower():
    t = turtle.Turtle()
    t.hideturtle()
    t.speed(0)
    t.penup()
 
    t.begin_poly()
    t.left(90)
    t.forward(TowerW)
    t.circle(-TowerP, 180)
    t.forward(TowerW)
    t.forward(TowerW)
    t.circle(-TowerP, 180)
    t.forward(TowerW-TowerP/2)
 
    t.left(90)
    t.forward(TowerH)
    t.circle(-TowerP, 180)
    t.forward(TowerH)
    t.end_poly()
    p = t.get_poly()
    SCR.register_shape('tower', p)
 
 
# 绘制塔柱
def draw_towers():
    set_tower()
    for tx in [-TowerSpace,0,TowerSpace]:
        t3 = turtle.Turtle('tower')
        t3.penup()
        t3.goto(tx,HORIZON)
 
 
# 绘制圆盘
def draw_plates(pn=4):
    plates=[]
    for i in range(pn):
        set_plate(i)
        _plate='plate_%s'%i
        _p=turtle.Turtle(_plate)
        _colorIdx = i % len(FillColors)
        _color=FillColors[_colorIdx]
 
        _p.color(_color,_color)
        _p.speed(PMS)
        plates.append(_p)
    # 反序,大的在前,小的在后
    global PLATES
    PLATES = plates[:]
 
# 绘制移动过程
def draw_move(diskIndex, fromPindex, toPindex):
    p=PLATES[diskIndex-1]
    index_loc={
        "A":1,
        "B":2,
        "C":3
    }
    toP=index_loc.get(toPindex,None)
    fromP=index_loc.get(fromPindex,None)
 
    p.penup()
 
    mx = (toP - 2) * TowerSpace
    my = HORIZON + len(POLES[str(toP)]) * BasePL * 2
 
    if fromP!=None:
        POLES[str(fromP)].remove(p)
        if Isjump:
            px,py=p.pos()
            p.goto(px,TowerH+py)
            p.goto(mx,TowerH+py)
 
    p.goto(mx, my)
    POLES[str(toP)].append(p)
 
 
# 将所有圆盘移动到起点
def movetoA(n,fromPindex):
    for i in range(n,0,-1):
        draw_move(i,None,fromPindex)
 
 
# 移动指定层圆盘diskIndex,从fromPole出发,到达toPole
def moveDisk(diskIndex,fromPole,toPole):
    """
    :param diskIndex: 圆盘的索引(从上往下,第一层为1,第二层为2、、、第n层为n)
    :param fromPole: 出发的柱子(起点)
    :param toPole: 要到达的柱子(终点)
    :return:
    """
    draw_move(diskIndex, fromPole, toPole)
 
 
# 核心函数,入口
def moveTower(height,fromPole, withPole, toPole):
    """
    :param height: 汉诺塔高度——层数
    :param fromPole: 出发的柱子(起点)
    :param withPole: 进过的柱子(中转点)
    :param toPole: 要到达的柱子(终点)
    :return:
    """
    if height == 1:
        # 基础情形:一层的汉诺塔
        moveDisk(1,fromPole, toPole)
        return
 
    # 先将圆盘1到n - 1看作一个整体从起点塔移动到中转塔(用目标塔作为本步骤的中转)
    moveTower(height-1,fromPole,toPole,withPole)
    # 再将圆盘n从起点塔A移动到目标塔C
    moveDisk(height,fromPole,toPole)
    # 最后将圆盘1到n - 1看作一个整体从中转塔移动到目标塔(用起点塔作为本步骤的中转)
    moveTower(height-1,withPole,fromPole,toPole)
 
 
if __name__ == '__main__':
    # 调用
    # 三层汉诺塔,A为出发柱子,B为中转柱子,C为目标柱子
    n=N
     
    SCR.tracer(0)
    draw_towers()
    draw_plates(n)
    movetoA(n,"A")
    SCR.tracer(1)

    moveTower(n,"A","B","C")
    turtle.done()

点击观看代码对应移动动画

本文主要通过三个实例来帮助大家理解递归(其展示动画已上传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

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

相关推荐

信号处理中的滤波器的阶数和谐波的理解

最近在读paper的时候,遇到了一些以前遗忘的问题,先重新查找,记录在这里,以备不时之查看。 我相信一定有小伙伴跟我有过一样的疑惑,那就是我们在使用滤波器的时候,总是遇到滤波器的阶数这个概念参数,我们很多都是根据别的paper里的设置,设置自己的科研参数,其实并不是很理解其中的含义: 其实我们常用的阶数N的意思是: 滤波器的阶数,就是指过滤谐波的次数,一般来讲,同样的滤波器,其阶

Miracle.Zhao的博客 2万+

【期末】R6-2 汉诺塔问题 (12 分)

汉诺塔问题求解:有三根相邻的柱子,假设标号分别为A、B、C,其中A柱子从下到上按金字塔状依次叠放了N个不同大小的圆盘,现要把A柱子上的所有圆盘一次一个地移动到C柱子上,移动的过程中可以借助B柱子做中转,并且每根柱子上的圆盘必须始终保持上小下大的叠放顺序。编写一个函数,输出移动轨迹(提示:用递归函数) 函数接口定义: 函数接口: hanoi(n,a,b,c),print移动轨迹并统计移动次数 n表示要移动的圆盘个数,a,b,c为三根柱子名称,表示将盘子从a移动到c,b为中转柱。 裁判测试程序样例: 测试样

技术宅拯救世界 2492

Confluence安装Drawio插件

记录confluence安装drawio插件步骤

devotedwife的博客 7379

汉诺塔python代码解释_详解python百行有效代码实现汉诺塔小游戏(简约版)

直接上代码:#左中右塔用一个列表存储left = list()center = list()right = list()"""初始化函数"""def init():size = input("(请友善输入整数,未写判断!)请输入层数:")#初始化塔列表,如5层 左边塔放 1-3-5-7-9,中间和右边放5个-1for i in range(1,int(size) + 1):left.append(...

weixin_39957068的博客 442

多目标跟踪(MOT)中的卡尔曼滤波(Kalman filter)和匈牙利(Hungarian)算法详解

多目标跟踪(MOT)中的卡尔曼滤波(Kalman filter)和匈牙利(Hungarian)算法详解 1. 概览 在开始具体讨论卡尔曼滤波和匈牙利算法之前,首先我们来看一下基于检测的目标跟踪算法的大致流程。 2. 卡尔曼滤波(Kalman filter) 目标跟踪中使用的就是最基础的 Kalman filter 算法。这里也仅仅讨论最基础的 Kalman filter 算法。 卡尔曼滤波算法的过程很简单,如下图所示。最核心的两个步骤就是预测和更新(下图的 correct)。 在目标跟踪任务中,目标的

生命在于折腾! 2万+

使用循环神经网络预测温度

简介 本文以天气时间序列数据集为例,讨论如何使用深度学习模型预测未来天气温度。 使用的是由德国耶拿马克思普朗克生物地球化学研究所的气象站记录。 数据每10分钟记录一次,共记录14种不同的量,如气温、气压、湿度、风向等,原始数据可追溯到2003年,本例只使用2009-2016年的数据。 数据 下载并解压数据略。 加载数据: data_dir = r'E:\practice\tf2\temperature' fname = os.path.join(data_dir, 'jena_climate_2009_

guotianqing的博客 5282

汉诺塔问题和升级版汉诺塔

经典问题: 有三根相邻的柱子,标号为A,B,C,A柱子上从下到上按金字塔状叠放着n个不同大小的圆盘,要把所有盘子一个一个移动到柱子B上,并且每次移动同一根柱子上都不能出现大盘子在小盘子上方,请问至少需要多少次移动,设移动次数为H(n)。 递归思想   H⑴ = 1 H(n) = 2*H(n-1)+1 (n>1) 那么我们很快就能得到H(n)的一般式: H(n) = 2^n - 1

u011878387的专栏 1428

Qt基础之十九:进程与QProcess

进程就是一个程序的执行实例,也就是正在运行的程序。对操作系统来说,进程就是一个担当分配系统资源CPU时间、内存的实体。在Qt 中,我们使用QProcess来表示一个进程。这个类可以允许我们的应用程序启动一个新的外部程序,并且与这个程序进行通讯。当外部程序开始启动时,QProcess的状态为Starting;外部程序已经启动时,QProcess的状态为Running,并发送started()信号;当外部层序退出了,QProcess的状态为NotRunning(初始状态),并发送finished()信号。

草上爬的博客 1万+

python turtle直接显示结果_【Python】用turtle库动态显示汉诺塔

一.初步了解汉诺塔问题汉诺塔问题,想必学过C语言的朋友都有过了解,其最大的一个特点是运用递归算法。一座汉诺塔,塔内有3个座A、B、C,A座上有n个盘子,盘子大小不等,大的在下,小的在上,如图所示。把这n个盘子从A座移到C座,但每次只能移动一个盘子,并且自移动过程中,3个座上的盘子始终保持大盘在下,小盘在上。在移动过程中可以利用B座来放盘子。二.Python静态实现1.代码如下:‪‬‪‬‪‬‪‬‪‬...

weixin_39611820的博客 758

Agent应用实践之三 - 基础:AgentScope-ReActAgent源码解析

本章通过总结AgentScope的核心类,再通过分析ReActAgent调用大模型的底层源码原理。使我们基本了解了Agent的基本原理,这个实现方式与OpenClaw使用pi-mono的Agent基础框架是一致的。了解完ReActAgent的基本原理,下一章我们会将一下SpringBoot集成方式的代码原理,这两章是我们构建后续内容的基本框架。

代码让AI扣 470

Python实现PDB文件预处理

蛋白质结构研究依赖PDB文件存储的三维结构数据,但原始文件常含无关的水分子、离子和非标准残基等干扰信息。本文介绍了一个基于BioPython的Python预处理脚本,可自动清理PDB文件,主要功能包括:1)移除短于阈值的蛋白质链;2)过滤非标准氨基酸;3)可选保留水分子和金属离子。该脚本逻辑清晰,支持批量处理,能显著提升结构比对、分子对接等分析前的数据准备效率,为后续生物信息学研究提供更纯净的结构数据基础。

Protein Designer的博客 568

【教程】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

Visual Studio Code ADT Extension 能不能连接 ECC,答案是可以,但真正的门槛在 ABAP 后端版本

Visual Studio Code 版 ABAP Development Tools(ADT)支持连接传统 SAP ECC 系统,关键不在于系统名称,而在于底层 SAP NetWeaver AS ABAP 版本是否达到最低要求(7.31 SP04 及以上)。只要系统已支持 Eclipse ADT,即可无缝使用 VS Code ADT,无需升级后端。SAP 通过复用原有 ADT 技术栈,将兼容性逻辑置于客户端,实现对老系统的持续支持。尽管初期侧重 ABAP Cloud 模型,但 1.1 及后续版本已全面覆盖

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 51

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

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

weixin_44046046的博客 1749

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

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

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

weixin_39968801的博客 488

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

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

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

大爽老师的博客 6007

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

大家好,我是大爽歌 本教程为本人在b站投稿的视频教程对应的文字版(正在更新中) 视频较详细,文本较简洁,大家选择一个看就好 本文主要通过三个实例来帮助大家理解递归(其展示动画已上传B站): 谢尔宾斯基三角形(Sierpinski Triangle) 汉诺塔(Tower of Hanoi) 迷宫探索(Maze Exploring) 本文代码已上传到github:https://github.com...

大爽老师的博客 1179

Python实现汉诺塔问题的可视化(以动画的形式展示移动过程)

学习Python已经有一段时间了,也学习了递归的方法,而能够实践该方法的当然就是汉诺塔问题了,但是这次我们不只是要完成对汉诺塔过程的计算,还要通过turtle库来体现汉诺塔中每一层移动的过程。 一、设计一个类(Class) 类(Class):用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。 下面是此程序需用到的类(Class)代...

dichuodi9849的博客 2248

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

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

weixin_30853329的博客 463

python实现汉诺塔可视化_Python实现汉诺塔问题的可视化(以动画的形式展示移动过程)...

学习Python已经有一段时间了,也学习了递归的方法,而能够实践该方法的当然就是汉诺塔问题了,但是这次我们不只是要完成对汉诺塔过程的计算,还要通过turtle库来体现汉诺塔中每一层移动的过程。一、设计一个类(Class)类(Class):用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。下面是此程序需用到的类(Class)代码:1 classSt...

weixin_39986896的博客 915

汉诺塔问题可视化

学习Python已经有一段时间了,也学习了递归的方法,而能够实践该方法的当然就是汉诺塔问题了,但是这次我们不只是要完成对汉诺塔过程的计算,还要通过turtle库来体现汉诺塔中每一层移动的过程。 一、设计一个类(Class) 类(Class):用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。 下面是此程序需用到的类(Class)...

weixin_34162228的博客 1137

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

import turtle class Stack: def __init__(self): self.items = [] def isEmpty(self): return len(self.items) == 0 def push(self, item): self.items.appen...

488

用turtle库实现汉诺塔问题~~~~~

汉诺塔问题 问题描述和背景: 汉诺塔是学习"递归"的经典入门案例,该案例来源于真实故事。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬在世界某个地方有个很虔诚的宗教组织,其中僧侣维护者一项神圣任务:保持宇宙的时间(好伟大啊....)。在时间的最开始(...

weixin_34315485的博客 431

python汉诺塔移动函数turtle_python中关于汉诺塔问题和使用turtle库实现其搬运过程...

一、汉诺塔问题汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘二、汉诺塔问题分析我们可以将问题简化描述为:n个盘子和3根柱子:A(源)、B(备用)、C(目的),盘子...

weixin_39932181的博客 241

【Python】用turtle库动态显示汉诺塔

一.初步了解汉诺塔问题 汉诺塔问题,想必学过C语言的朋友都有过了解,其最大的一个特点是运用递归算法。 一座汉诺塔,塔内有3个座A、B、C,A座上有n个盘子,盘子大小不等,大的在下,小的在上,如图所示。把这n个盘子从A座移到C座,但每次只能移动一个盘子,并且自移动过程中,3个座上的盘子始终保持大盘在下,小盘在上。在移动过程中可以利用B座来放盘子。 二.Python静态实...

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

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值