Discuss / Python / 哪位大侠能解释下那个汉诺塔游戏python代码里的move(n,a,b,c)、move(n-1,a,c,b)还有move(n-1,b,a,c)都是怎么赋值的啊?我脑子瓦塔了,总也想不明白。。。

哪位大侠能解释下那个汉诺塔游戏python代码里的move(n,a,b,c)、move(n-1,a,c,b)还有move(n-1,b,a,c)都是怎么赋值的啊?我脑子瓦塔了,总也想不明白。。。

Topic source

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

上述的程序计算机的计算过程都是怎么赋值的?我有些混乱。。。。

壹颗汤圆

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

例如木块的数量是2,move(2,a,b,c),n≠1,进入else move(1,a,c,b),move(1,a,b,c),move(1,b,a,c)对应的输出是a->b,a->c,b-c. 木块的数量是3,move(3,a,b,c),n≠1,进入else move(2,a,c,b), move(1,a,b,c),move(2,b,a,c).n=2的地方还是调用函数,n=2是三步,所以n=3是7步

Exmlyshy

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

首先明白基本思想: 1.把A柱子上的n-1个盘子挪到B上 2.把A柱上最后一个挪到C上 3.再把B上的n-1个盘子挪到C上 你可以从两个开始推,会发现n个数量盘子总是依赖于n-1个的解决方法,n-1(递归作为n)依赖于n-2(作为n-1)一直到移动3个需要先移动2个,推推就明白了


  • 1

Reply