Discuss / Python / 求助——如何计算实现的步数,下面程序为什么报错

求助——如何计算实现的步数,下面程序为什么报错

Topic source

num = 0 def calc(): num = num + 1

def move(n, a, b, c): if n == 1: print(a,'-->',c) calc() else: move(n-1,a,c,b) move(1,a,c,b) move(n-1,b,a,c)

n = int(input('请输入汉诺塔成层数:\n')) move(n, 'A', 'B', 'C')

这样可以了,但是上面不行的原因还是不明白

l = []
def calc():
    l.append(1)

def move(n, a, b, c):
    if n == 1:
        print(a,'-->',c)
        calc()
    else:
        move(n-1,a,c,b)
        move(1,a,c,b)
        move(n-1,b,a,c)   

n = int(input('请输入汉诺塔成层数: '))
move(n, 'A', 'B', 'C')
print('汉诺塔完成步数:',sum(l))

l = [] def calc(): l.append(1)

def move(n, a, b, c): if n == 1: print(a,'-->',c) calc() else: move(n-1,a,c,b) move(1,a,b,c) move(n-1,b,a,c)

n = int(input('请输入汉诺塔成层数: ')) move(n, 'A', 'B', 'C') print('汉诺塔完成步数:',sum(l))

继续改进下:

l = []
def calc():
    l.append(1)

def move(n, a, b, c):
    if n == 1:
        calc()
        print(len(l),':',a,'-->',c)
    else:
        move(n-1,a,c,b)
        move(1,a,b,c)
        move(n-1,b,a,c)   

n = int(input('请输入汉诺塔成层数: '))
move(n, 'A', 'B', 'C')

  • 1

Reply