Hanoi塔(汉诺塔/梵天塔)问题
Hanoi塔
汉诺塔(梵天塔/Hanoi)问题是计算机中比较典型的一个递归问题。废话不多说了,直接上代码。
Python3.5代码
"""重温本科学习过之书籍:计算机科学概论,C语言程序设计,C++面向对象程序设计,操作系统,数据结构,计算机网络,Linux操作系统使用教程等.
"""#!/usr/bin/env python
#-*- coding:utf-8 -*-
'''
@author : FIGTHING
@file : Hanoi.py
@function:
@software: Pycharm
@time : 2020/04/26/17:31
'''
"""
Hanoi问题(递归问题):
将第一个柱子上的n个盘子,借助第二个柱子,全部移到第三个柱子上。
规则:
1)每次只能移动一个盘子;
2)盘子只能在三个柱子上来回移动,不能放在其他地方;
3)三个柱子上的盘子必须始终保持大盘在下,小盘在上。
"""
#定义Hanoi函数:n盘子个数,left第一个柱子,middle第二个柱子,right第三个柱子
def Hanoi(n, left, middle, right):global countif n == 1:print(left, "-->", right) #当n=1,将第一个柱子上的盘子直接房子第三个柱子上。count+=1else:Hanoi(n-1, left, right, middle) #把n-1个盘子借助第三个柱子,从第一个柱子挪到第二个柱子print(left, "-->", right) #将最后一个盘子从第一个柱子挪到第三个柱子count+=1Hanoi(n-1, middle, left, right) #把n-1个盘子借助第一个柱子,从第二个柱子挪到第三个柱子#输入盘子个数
n = int(input("Please Hanoi`s number:"))
#移动盘子的次数。f(count) = 2^n - 1
count=0
Hanoi(n, "left", "middle", "right")
print(count)
运行结果
当你输入盘子的个数后,运行结果就会显示每一步的操作以及执行的总步数。
(小编的话:距离上次写博客又过去一个多月了。惭愧惭愧!希望你们没有浪费这疫情期间的这几个月。)
("The mankind’s courage and resolution will be witnessed and remembered by stars.
FIGHTING…")
Hanoi塔(汉诺塔/梵天塔)问题相关推荐
- 2016年圣诞节巨献:C#汉诺塔河内塔游戏(动画、圣诞节音效)源码及安装包
终于把VS的的打包搞定了,高兴啊! 圣诞节巨献:C#汉诺塔河内塔游戏(动画效果.圣诞节音效).在平庸而又乏味的生活中,来一把紧张而刺激的汉诺塔游戏,生活,就是这么美好.游戏代码可以在博主的资源页下载! ...
- 小知识系列(3):Hanoi塔(汉诺塔,河内塔)
同样,借此来强化学习,但是说实话我写这个感觉很玄.Hanoi塔是昨天刚学到的东西,想了很久,感觉还是没有悟透,可能学到更多新东西,或产生了新的想法,或突然悟到了什么,届时会再做修改. 看了很多关于Ha ...
- Tower of Hanoi(汉诺塔)详解
一个经典的汉诺塔问题,带着我自己的理解给做这个问题的友友们解决一下,包括我本人在做的时候也遇到的一些问题给大家阐述一下.话不多说,来看: 汉诺塔 问题描述: 汉诺塔(Hanoi Tower),又称河内 ...
- Hanoi Tower 汉诺塔的简单分析/C
当然.这是一个经典的递归问题~ 想必来看这篇博文的同学对汉诺塔应该不会陌生了吧, 写这篇博还是有初衷的: 之前学数据结构的时候自己看书.也上网上查了很多资料,资料都比较散.而且描述的不是很清楚, ...
- hanoi塔递归算法c语言,递归算法 Hanoi(汉诺)塔问题
Hanoi(汉诺)塔问题.这是一个古典的数学问题,是一个用递归方法解题的典型例子.问题是这样的:古代有一个梵塔,塔内有3 个座A.B.C,开始时A座上有64个盘子,盘子大小不等,大的在下,小的在上.有 ...
- 【PE806】Nim on Towers of Hanoi(汉诺塔游戏,生成函数)
PE:Project Euler 题意: 汉诺塔游戏是如下的问题:有三根柱子,第一根柱子套有 n n n 个圆盘,圆盘从上往下半径递增.每次操作可以把套在某根柱子上的最上面的那个圆盘移到另一个柱子上. ...
- 汉诺塔+汉诺四塔(C/C++)
目录 汉诺塔 1 简介 2 代码思路 2.1 对于次数的理解 2.2 对于移动的理解 3 代码 4 加深理解 汉诺四塔 1 思路 2 代码 汉诺塔 1 简介 汉诺塔(Tower of ...
- 具体数学 递归问题1.1 从河内塔/汉诺塔开始
河内塔问题 在经典河内塔问题中,有3根柱子和N个不同大小的穿孔圆盘,盘子可以滑入任意一根柱子.一开始,所有盘子自上而下按从大到小依次套在一根柱子上,现在想将所有的圆盘按照原来的位置从一根柱子移动到另一 ...
- 个人心得——hanoi问题 汉诺塔问题详细分析
简单地介绍题目 点进来的各位其实也应该不陌生了,三根柱子,N个圆盘,要求把所有的圆盘从第一根柱子放到第三根上,并且编号下面的圆盘不能放在编号上的圆盘上.这个问题其实知乎上有很多答主都答得不错,这里我想 ...
- [河内塔]汉诺塔实现
function hanoi (n, from, to, spare) {if(n == 1) {console.log(`${from} => ${to}`) }else {hanoi(n-1 ...
最新文章
- html怎么做半圆形按钮,css3做出半圆弧线
- iphone降级_无刘海 iPhone 现身苹果官网iOS 13.3 系统验证已关闭
- boost::gil::threshold_adaptive用法的测试程序
- 前端HTML5CSS动画变形动画之过渡
- 计算机二级高级应用这么难,计算机二级考试越来越难的实锤!真实数据告诉你到底难在哪里?...
- 苹果手机怎么拍星空_手机拍星空,看这篇教程就够了!
- mybatis学习(50):嵌套查询
- Mysql 零距离-入门(二)
- node.js 回调函数
- python列表的小东西_小谈python里 列表 的几种常用用法
- 2021-06-09 动态的创建对象,通过反射.
- 使用cxf3.0.4搭建webservice服务需要的最精简jar包
- Linux下安装gcc报错的情况解决方案
- 理解 GBK、Unicode、utf-8
- 显卡识别为Microsoft基本显示适配器,安装9700k核芯显卡HD630驱动或安装其他核显驱动
- android 工具类toast,Android Toast工具类
- ERROR: Cannot uninstall ‘xxx‘. It is a distutils installed project and thus we cannot accurately
- ACM—数论—费马大定理 (数学史上著名的定理)
- linux curse库函数,curse
- 新安装Ubuntu 16.04 不能上网