汉罗塔python_基于Python的汉诺塔算法
首先贴出Python编写的汉诺塔算法的代码:
def hanoti(n,x1,x2,x3):
if(n == 1):
print('move:',x1,'-->',x3)
return
hanoti(n-1,x1,x3,x2)
print('move:',x1,'-->',x3)
hanoti(n-1,x2,x1,x3)
hanoti(3,'A','B','C')
汉诺塔问题归根结底就是一个递归问题,递归包括两大要素:递归体、递归结束条件
首先分析汉诺塔算法的思想:
第一步:若想将n个圆盘中最大的圆盘从A塔放到C塔,需要借助B塔放置其余的n-1个圆盘
第二步:再把B塔看做初始条件时的A塔,将B塔上的n-1个圆盘依据规则放置到C塔上,这一步就是实现一个递归
依据代码来分析:
首先定义函数hanoti(n,x1,x2,x3),该函数作用是将n个圆盘从第一个参数(这里为x1)放到第三个参数(这里为x3)上,
if判断是递归结束条件,意思为若只有一个圆盘,只需要将他从第一个参数(这里为x1)放到第三个参数(这里为x3)上即可,
如果不满足递归结束条件,函数继续执行,
hanoti(n-1,x1,x3,x2)语句就是执行第一步的过程,即将除最大圆盘外的n-1个圆盘从第一个参数(这里为x1)放到第三个参数(这里为x2)上,
然后输出表示移动结束的print语句,
这一句结束后,表示x2上现在放置着所有剩余的n-1个圆盘,
再继续递归hanoti(n-1,x2,x1,x3)语句,执行第二步过程,即将剩余的n-1个圆盘按同样的方法从从第一个参数(这里为x2)放到第三个参数(这里为x3)上
如此循环往复,完成汉诺塔问题
汉罗塔python_基于Python的汉诺塔算法相关推荐
- python汉诺塔算法解析_基于Python的汉诺塔算法
首先贴出Python编写的汉诺塔算法的代码: def hanoti(n,x1,x2,x3): if(n == 1): print('move:',x1,'-->',x3) return hano ...
- python英汉字典,Python基于有道实现英汉字典功能,python英汉字典
Python基于有道实现英汉字典功能,python英汉字典 本文实例讲述了Python基于有道实现英汉字典功能的方法.分享给大家供大家参考.具体如下: import re,urllib aa=&quo ...
- python汉诺塔算法解析,python实现的汉诺塔算法示例
本文实例讲述了python实现的汉诺塔算法.分享给大家供大家参考,具体如下: 规则: 圆盘从下面开始按大小顺序重新摆放在另一根柱子上.并且规定 在小圆盘上不能放大圆盘 在三根柱子之间一次只能移动一个圆 ...
- python实现汉诺塔递归经典算法_Python递归实现汉诺塔算法示例
本文实例讲述了Python递归实现汉诺塔算法.分享给大家供大家参考,具体如下: 最近面试题,面试官让我5分钟实现汉诺塔算法(已然忘记汉诺塔是啥). 痛定思痛,回来查了一下汉诺塔的题目和算法.题干与实现 ...
- 用python编写一个汉诺塔的移动函数_python实现的汉诺塔算法示例
本文实例讲述了python实现的汉诺塔算法.分享给大家供大家参考,具体如下: 规则: 圆盘从下面开始按大小顺序重新摆放在另一根柱子上.并且规定 在小圆盘上不能放大圆盘 在三根柱子之间一次只能移动一个圆 ...
- 【汉诺塔-算法必备】
文章目录 汉诺塔~算法 代码如下: 一天一点python小学习 `小知识点`: 上一页:[PTA~基础编程题集](https://blog.csdn.net/m0_66318554/article/d ...
- 汉诺塔算法python_python实现汉诺塔算法
题目: 汉诺塔给出最优解,如果对汉诺塔的定义有不了解,请翻看数据结构教材. 除了最基本的之外,还有一题,给定一个数组,arr=[2,3,1,2,3],其含义是这是一个有5个圆盘的汉诺塔,每一个数字代表 ...
- 手撕“汉诺塔算法”之详细图解
hello,你好呀,我是灰小猿,一个超会写bug的程序猿, 今天和大家分享一个递归经典算法案例---"汉诺塔". 汉诺塔问题回顾 汉诺塔(Tower of Hanoi)源于印度传说 ...
- 算法自我分析——汉诺塔算法
汉诺塔算法 汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具.大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘.大梵天命令婆罗门把圆盘从下面开始按大小 ...
- 汉诺塔算法 java_汉诺塔算法java实现详解
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public ...
最新文章
- Notepad++中执行Python脚本
- oracle中判断是否为季末,Oracle中取月初,月末,季初,季末及年初,年末时间总结...
- 第三部分:Android 应用程序接口指南---第二节:UI---第八章 Toast通知
- 5G为何采纳华为力挺的Polar码?一个通信工程师的大实话
- 4.RabbitMQ 4种交换模式
- 安卓手机背景变黑色怎么改_别着急扔掉旧手机 你的电脑可能需要它
- OpenCV图像的轮廓的匹配
- 数学建模-14.主成分分析PCA
- XML和JSON的使用总结
- filebeat日志采集的一次流程记录
- ArcGIS单波段提取
- JAVA的MySQL字符串拼接_MySQL字符串拼接、截取
- C++--最大公约数和最小公倍数
- canvas 填充圆内正方形
- java 字符串排列组合_字符串排列组合问题
- Idea复制文件一直updating indices
- 基于docker的test-containers环境百宝箱
- 2018 *精读书单 -选读
- 巴菲特:为什么在混乱和动荡的时候最适合买入股票?
- 【产品功能】弹性网卡支持私网多IP