Discuss / Python / 不懂原理的同学可以参考一下

不懂原理的同学可以参考一下

Topic source

Leonardo_6666

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

记移动n个盘子需要f(n)步。首先,需要把前n-1个盘子从 'A' 移动到 'B' ,这需要f(n-1)步,对应"move(n-1,a,c,b)";然后,从 'A' 再往 'C' 移动最大最底层的那块,需要f(1)步,对应"move(1,a,b,c)";最后,将之前的(n-1)个盘子从 'B' 移动到 'C' ,也需要f(n-1)步,对应"move(n-1,b,a,c)"。因此程序这么写: def move(n, a, b, c): if n == 1: print('move', a, '-->', c) else: move(n-1, a, c, b) move(1, a, b, c) move(n-1, b, a, c)

你好,按照你的逻辑 那么输出第一个应该是A→B,可为什么答案第一个是A→C,我跟你想的一样,但是输出的结果让我很费解。

楼上的 n=1时只有a-c打印出来

move(3, "A", "B", "C") n = 3: move(2,A,C,B) n=2: move(1,A,B,C) A-->C //第一个输出 move(1,A,C,B) A-->B //第二个输出 move(1,C,A,B) C-->B move(1,A,B,C) A-->C move(2,B,A,C) n=2: move(1,B,C,A) B-->A move(1,B,A,C) B-->C move(1,A,B,C) A-->C


  • 1

Reply