用Python定义一个函数,用递归的方式模拟汉诺塔问题

【任务需求】

定义一个函数,用递归的方式模拟汉诺塔问题,三个柱子,分别为A、B、C,其中A柱子上有N个盘子,从小到大编号为1到N,盘子大小不同。现在要将这N个盘子从A柱子移动到C柱子上,但移动的过程必须遵循以下规则:

1.每次只能移动一个盘子;

2.盘子只能放在空柱子或者比自己大的盘子上面;

3.每次只能移动最上面的盘子。

代码展示:

# 模仿汉诺塔
count = 0
def hanoi(num,src,mid,dst):    #num代表圆盘数,src,mid,dst,分别代表初始柱,缓冲柱,目标柱
    if num < 1:
        return
    global count               # 移动的次数的变量为全局变量
    if num == 1:
        print(src,'-->',dst)
        count += 1
    else:
        hanoi(num-1,src,mid,dst)
        print(src,'-->',dst)
        count += 1
        hanoi(num-1,mid,dst,src)

hanoi(3,"A","C","B")    # 设置盘子的数量,同时将num数量个盘子从柱子A移动到柱子C,辅助柱子为柱子B
print(f"移动了:{count}次")

运行结果

用Python定义一个函数,用递归的方式模拟汉诺塔问题_第1张图片

你可能感兴趣的:(Python,python)