Discuss / Python / 汉诺塔看似复杂,实则简单

汉诺塔看似复杂,实则简单

Topic source
# usr/bin/env python3
# -*- coding:utf-8 -*-
# 以下是汉诺塔游戏程序# 定义递归函数,其中n 为盘子数量,a,b,c 分别表示3个柱子# 如果需要将n个盘子从a经过b移动到c,则a中最大的底盘移动到c时,剩下的n-1个盘子需要借助c移动到b;
def move(n, a, b, c):
    if n == 1:  # 如果只有1个,则直接从a移动到c        
        print(a, '-->', c)
    else:  # 如果个数大于1个,则需要先将n-1个移动到b,将最大的移动到c        
        move(n-1, a, c, b)  # 将n-1个移动到b        
        move(1, a, b, c)  # 最大的移动到c        
        move(n-1, b, a, c)  # 将剩下的n-1移动到c

# 调用函数
move(3, 'A', 'B', 'C')

lizilong

#2 Created at ... [Delete] [Delete and Lock User]

原来如此,我以为规则是一次只能移动一个盘,我就说怎么看不懂别人的答案。。。。

青空杳然

#3 Created at ... [Delete] [Delete and Lock User]

规则就是一次只能移动一个盘


  • 1

Reply