汉诺塔变种问题

问题描述

汉诺塔问题中限制不能将一层塔直接从最左侧移动到最右侧,也不能直接从最右侧移动到最左侧,而是必须经过中间。求当有N层塔的时候移动步数。

代码部分(python3)

打印出移动过程:

def hanoi(num):
    global steps
    if num == 1:
        print(A+'2'+B)
        print(B+'2'+C)
    else:
        hanoi(num-1)
        print(A+'2'+B)
        hanoi(num-1)
        print(B+'2'+C)
        hanoi(num-1)


N = int(input())
hanoi(N)

求移动次数

N = int(input())
def hanoi(num):
    if num == 1:
        return 2
    else:
        return hanoi(num-1) * 3 + 2

print(hanoi(N))
posted @ 2018-12-14 16:12  去跑去跳  阅读(466)  评论(0编辑  收藏  举报