0.汉诺塔游戏
1.简单递归代码分享
# -*- coding: utf-8 -*-
# hanoi.py
"""
Created on Tue Apr 20 21:16:08 2018
@author: wangdan
learned from www.fishc.com
"""
def hanoi(n, x, y, z):
if n == 1:
print(x, '--->', z) # 如果只有一层,直接从x移动到z
else:
hanoi(n-1, x, z, y) # 将前n-1个盘子从x移动到y上
print(x, '--->', z) # 将最底下的盘子从x移动到z上
hanoi(n-1, y, x, z) # 将y上的盘子移动到z上
n = int(input("请输入汉诺塔的层数:"))
print("盘子搬运过程如下:")
hanoi(n, 'A', 'B', 'C')
2.程序运行测试
- 当汉诺塔只有两个盘子时:
>>>请输入汉诺塔的层数:2
盘子搬运过程如下:
A ---> B
A ---> C
B ---> C
- 当汉诺塔有五个盘子时:
>>>请输入汉诺塔的层数:5
盘子搬运过程如下:
A ---> C
A ---> B
C ---> B
A ---> C
B ---> A
B ---> C
A ---> C
A ---> B
C ---> B
C ---> A
B ---> A
C ---> B
A ---> C
A ---> B
C ---> B
A ---> C
B ---> A
B ---> C
A ---> C
B ---> A
C ---> B
C ---> A
B ---> A
B ---> C
A ---> C
A ---> B
C ---> B
A ---> C
B ---> A
B ---> C
A ---> C