首先贴出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)上

如此循环往复,完成汉诺塔问题

原文:http://www.cnblogs.com/mzcletics/p/5901784.html

python汉诺塔算法解析_基于Python的汉诺塔算法相关推荐

  1. python协同过滤可以预测吗_基于用户的协同过滤推荐算法原理-附python代码实现...

    在推荐系统众多方法中,基于用户的协同过滤推荐算法是最早诞生的,原理也较为简单.该算法1992年提出并用于邮件过滤系统,两年后1994年被 GroupLens 用于新闻过滤.一直到2000年,该算法都是 ...

  2. python中numpy数组的合并_基于Python中numpy数组的合并实例讲解

    基于Python中numpy数组的合并实例讲解 Python中numpy数组的合并有很多方法,如 - np.append() - np.concatenate() - np.stack() - np. ...

  3. python关于二手房的课程论文_基于python爬取链家二手房信息代码示例

    基本环境配置 python 3.6 pycharm requests parsel time 相关模块pip安装即可 确定目标网页数据 哦豁,这个价格..................看到都觉得脑阔 ...

  4. python怎样使用各个日期赤纬_基于Python的天文软件命令行界面设计与实现

    计算机软件技术的不断发展,推动了人机交互技术的长足进步.从传统的命令行(Command Line Interface,CLI),到图形用户界面(Graphical User Interface,GUI ...

  5. python版植物大战僵尸源码_基于python的植物大战僵尸游戏设计与实现.docx

    湖南理工学院毕业设计(论文) PAGE PAGE 1 学 号 毕业设计(论文) 题目:基于python的植物大战僵尸游戏设计与实现 作 者 届 别 届 院 别 信息与通信工程学院 专 业 信息工程 指 ...

  6. 基于python的爬虫系统金融数据_基于Python的互联网金融数据采集

    基于Python的互联网金融数据采集 □文/王 蕾1安英博1刘佳杰2 [提要] 互联网金融数据中潜藏着未知的知识价值,但也存在着巨量的数据冗余.通过Python可以进行互联网金融数据的获取.解析.提取 ...

  7. python发送文件给微信好友_基于Python实现定时自动给微信好友发送天气预报

    效果图 from wxpyimport * import requests from datetimeimport datetime import time from apscheduler.sche ...

  8. 基于python的公众号课堂教学_基于Python的微信公众号数据挖掘分析

    基于Python的微信公众号数据挖掘分析 华南农业大学电子工程学院 王 建 黄宁香 [期刊名称]电子世界 [年(卷),期]2019(000)011 [总页数]3 运用Python网络爬虫技术对某时事类 ...

  9. 用python写脚本筛选原创微博_基于python编写的微博应用

    本文实例讲述了基于python编写的微博应用,分享给大家供大家参考.具体如下: 在编写自己的微博应用之前,先要到weibo开放平台申请应用的公钥和私钥. 下载python版的SDK,打开example ...

最新文章

  1. 扫地机器人评测 毛发_会切毛发的机器人?海尔扫地机P70抢先评测
  2. 发力企业云,用友是要掉队,还是进击?
  3. Linux/CentOS安装MySQL(RPM安装、编译安装)
  4. c#与api类型对照表
  5. java -虹软Caused by: java.lang.UnsatisfiedLinkError: Can‘t load library: **\WIN64\libarcsoft_face.dll
  6. 给页面加上loading加载效果
  7. JSP购物车案例精简版-适合小白学习
  8. 一文告诉你16条微信小程序推广渠道大全
  9. 阴历日期和阳历日期互相转换(java)
  10. windows10正式版官方原版镜像iso下载地址
  11. vue项目中 高德地图总是出不来的问题
  12. 用计算机专业怼人,专业示范,教你如何用所学专业知识“怼人”
  13. 【论文笔记】CVR预估之ESMM模型
  14. Kubernetes 安全专家(CKS)必过心得
  15. php怎么快速背,一个月背部快速蜕变?用上这7招效果绝对意想不到!
  16. CentOS 下搭建 aria2 远程下载环境
  17. 电路习题解答 第五章 5-5、5-6
  18. 第九章 SQL查询数据库(一)
  19. Thunderbird邮件客户端,支持直接另存为模板
  20. HTML5期末大作业:汽车销售网站模板设计(7个页面) HTML+CSS+JavaScript 企业网页设计源码

热门文章

  1. 架构相关:服务降级思路与方法
  2. mongoDB的三种基础备份方法
  3. [文档和源码分享] 基于WIN32 API界面编程实现的百战天虫小游戏
  4. 在浏览器输入一个网址到得到页面的过程(详细)
  5. 小波变换、小波分解[python实现]//未完待续
  6. vue获取微信登陆权限_vue 授权获取微信openId操作
  7. 福利 | 请查收!Hyperscan Windows安装指南 文末有彩蛋
  8. 将Python文件编译为exe可执行程序
  9. 音频振动数据采集卡的技术参数-阿尔泰科技
  10. CSS3动画之线性动画与帧动画