Hanoi塔(汉诺塔/梵天塔)问题
Hanoi塔汉诺塔(梵天塔/Hanoi)问题是计算机中比较典型的一个递归问题。废话不多说了,直接上代码。Python3.5代码"""重温本科学习过之书籍:计算机科学概论,C语言程序设计,C++面向对象程序设计,操作系统,数据结构,计算机网络,Linux操作系统使用教程等."""#!/usr/bin/env python#-*- coding:utf-8...
·
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 count
if n == 1:
print(left, "-->", right) #当n=1,将第一个柱子上的盘子直接房子第三个柱子上。
count+=1
else:
Hanoi(n-1, left, right, middle) #把n-1个盘子借助第三个柱子,从第一个柱子挪到第二个柱子
print(left, "-->", right) #将最后一个盘子从第一个柱子挪到第三个柱子
count+=1
Hanoi(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…")
更多推荐
已为社区贡献1条内容
所有评论(0)