汉诺塔 递归问题 算法是不是这样的?

汉诺塔问题 递归算法(参考答案)是不是这么个意思?

def move(n, a, b, c):   #move函数几个形式参数:第一个表示需要移动的圆盘数,第二个(不一定是a)表示准备移走的柱子,第三个表示过渡柱子,第四个参数表示目标柱子。

     if n == 1:

            print (a,'-->',c) #这其实是只有一个圆盘需要从A到C的情况。所有递归,最终都是走到这一步。

            return #这是结束递归,省略了None。没有这句的话,递归没办法结束。

     move(n-1,a,c,b) #将A柱的n-1个盘移到B柱,这里毫无争议。注意形参顺序变化了。

     print  a,'-->',c  #这句话才是第一个柱子的第n个圆盘移动到目标柱子。

     move(n-1, b, a, c)) #过渡柱子B上(n-1)个圆盘B递归移动到目标柱子C


码农的自我修养
浏览 1660回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python