问题描述
汉诺塔问题中限制不能将一层塔直接从最左侧移动到最右侧,也不能直接从最右侧移动到最左侧,而是必须经过中间。求当有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))