不明白move(n-1, b, a, c)?还有,为什么要调换a,b,c的位置?

def move(n, a, b, c):
    if n ==1:
        print a, '-->', c
        return
    move(n-1, a, c, b)
    print a, '-->', c
    move(n-1, b, a, c)
move(4, 'A', 'B', 'C')

最后这一行代码

 move(n-1, b, a, c)

是什么意思?还有就是a,b,c  a,c,b   b,a,c  为什么顺序会换?谢谢!!!

老茧
浏览 3587回答 2
2回答

清波

这个就是 函数的参数方面的问题了。 最著名的形式参数(形参),实际参数(实参)的区别:def func (a, b):     print(a, b)     func1(b, a)      def func1(x, y):     print (x, y)      ## 定义了两个函数 func 和func1 其中, 定义是所用的 a, b, x, y 都是形参, 而调用时传给函数的参数就是 实参了 func(1, 2) ## 输出 1 2 2 1 ## 解释, 调用 func(1, 2) 这个1 和 2  就是实参。 同样 在 func() 函数中,我们调用了 func1(b,a) 这里面的 b 和 ## a 就是实参了 在这里是 2 和1 。嗯, 形参和实参的 转换, 基本就是在 函数定义的内部 再次调用函数(如果是其本身 被称为递归调用)的时候。上面的 汉诺塔递归 就是这种 每次调用 都在做 形参和实参的转换。

萧沐123

这是一种递归调用,move(n-1, a, c, b)是为了将之前的n-1个先放到b上,当这部完成后,move(n-1, b, a, c)则就是将之前已经放到b上的那n-1个再放回到c上,这里的abc都是形式参数,abc顺序的转换就是将不同的值传入递归函数中使其能够执行转换,楼主可以先从3个的汉诺塔开始,按程序一点点的走,更便于理解递归
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python