python3汉诺塔简单实现代码

小时候喜欢玩汉诺塔,今天用python实现简单的汉诺塔功能

代码:

def hannoi(n,x,y,z):
	if n==1:
		print(x,‘-->‘,z)
	else:
		hannoi(n-1, x, z, y)
		print(x,‘-->‘,z)
		hannoi(n-1, y, x, z)

n=int(input("请输入x,yz:"))
hannoi(n, "X", "Y", "Z")

  

原文地址:https://www.cnblogs.com/68xi/p/11677589.html

时间: 2024-10-09 22:12:01

python3汉诺塔简单实现代码的相关文章

Java编程用栈来求解汉诺塔问题的代码实例(非递归)_java - JAVA

文章来源:嗨学网 敏而好学论坛www.piaodoo.com 欢迎大家相互学习 [题目] 汉诺塔问题比较经典,这里修改一下游戏规则:现在限制不能从最左侧的塔直接移动到最右侧,也不能从最右侧直接移动到最左侧,而是必须经过中间.求当塔有N层的时候,打印最优移动过程和最优移动总步数. [解答] 上一篇用的是递归的方法解决这个问题,这里我们用栈来模拟汉诺塔的三个塔,也就是不用递归的方法 原理是这样的:修改后的汉诺塔问题不能让任何塔从左直接移动到右,也不能从右直接移动到左,而是要经过中间,也就是说,实际上

关于汉诺塔,C++代码,代码效果演算

 1.故事介绍 汉诺塔:汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具.大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上依照大小顺序摞着64片黄金圆盘.大梵天命令婆罗门把圆盘从以下開始按大小顺序又一次摆放在还有一根柱子上.而且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次仅仅能移动一个圆盘. 2.由来 法国数学家爱德华·卢卡斯曾编写过一个印度的古老传说:在世界中心贝拿勒斯(在印度北部)的圣庙里,一块黄铜板上插着三根宝石针.印度教的主神梵天在创造世界的时候,在当中一根针

初识汉诺塔问题

汉诺塔 汉诺塔(Tower of Hanoi)源于印度传说中,大梵天创造世界时造了三根金钢石柱子,其中一根柱子自底向上叠着64片黄金圆盘.大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上.并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘. ——引自维基百科 若给汉诺塔传说中三根柱子分别用英文字母a,b,c命名,其中只有a柱子摆放n片圆盘(1<=n<=100000), 若要把a柱子上的所有圆盘转移到c柱子上,问最少需要移动多少次圆盘. 移动圆盘的规则如下: 每

基于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') 汉诺塔问题归根结底就是一个循环问题,循环包括两大要素:循环体.循环结束条件 首

算法之刻画指定尺的刻度由次引发的简单汉诺塔代码实现

1.刻度尺递归优美实现 1 # 画英式标尺,刻度线长度为 n 的 m 英寸标尺 2 # 对于开始 L = 0,直接绘制 该刻度 3 # 那么一般的情况有, 4 # 中央刻度 L >= 1 时 有 5 # 一个中央刻度为 L-1 的刻度间隔 6 # 一个中央刻度为 L 的间隔 7 # 一个中央刻度为 L-1 的间隔 8 # 设计思路: 分三个功能函数,一个构建整体的 刻度尺, 一个接受画几条刻度线, 一个输出 应该画几条刻度线 9 10 def draw_line(tick_length, tic

Hanio汉诺塔代码递归实现

1.背景介绍 Hanio (汉诺塔,又称河内塔)问题是源于印度一个古老传说的益智玩具.大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘.大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上.并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘. 我们姑且不去追溯传说的缘由,现考虑一下把64片金片,由一根针上移到另一根针上,并且始终保持上小下大的顺序.这需要多少次移动呢?这里需要递归的方法.假设有n片,移动次数是f(n).显然f

汉诺塔的简单递归思想

最近在校招打酱油,闲得没事想起了大一学过的汉诺塔,不过那时只知道玩游戏,一次性3~7个玩过了,还是有成就感的呵呵.游戏链接:http://www.7k7k.com/swf/335.htm. 看了网上很多递归方法,像 1 #include<stdio.h> 2 3 void move(int n,char a,char b,char c) 4 { 5 if(n==1) 6 printf("\t%c->%c\n",a,c); 7 else 8 { 9 move(n-1,a

汉诺塔问题的详解-附代码

一.由来: 汉诺塔:汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具.大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘.大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上.并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘. 汉诺塔问题源于递归算法,看起来很简单,想起来很麻烦,要深刻理解递归的真正含义,将第一个柱子上的所有圆盘全部拿到第三个盘子上,其实这些盘子可以抽象的分成两个部分,最底下的大盘子,和上面的小盘子.

NYOJ 93 汉诺塔(三) 【栈的简单应用】

汉诺塔(三) 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 描写叙述 在印度,有这么一个古老的传说:在世界中心贝拿勒斯(在印度北部)的圣庙里,一块黄铜板上插着三根宝石针.印度教的主神梵天在创造世界的时候.在当中一根针上从下到上地穿好了由大到小的64片金片,这就是所谓的汉诺塔. 不论白天黑夜,总有一个僧侣在依照以下的法则移动这些金片:一次仅仅移动一片.无论在哪根针上.小片必须在大片上面.僧侣们预言.当全部的金片都从梵天穿好的那根针上移到另外一根针上时,世界就将在一声霹雳中