首页 > 编程语言 > 详细

python算法-汉诺塔问题

时间:2018-04-28 23:26:51      阅读:249      评论:0      收藏:0      [点我收藏+]

汉诺塔问题

 

初始状态:

技术分享图片

 

思考:当盘子的个数是3的时候,大家写出移动顺序

移动的步骤:

技术分享图片

3个盘子,从ac

1、前面两个盘子,从ab

1)把前面一个盘子,从ac

a->c

2)把第二个盘子,从ab

a->b

3)把c上的盘子,从cb

c->b

2、最后一个盘子,从ac

a->c

3、把b上的两个盘子,从bc

1)把前面一个盘子,从ba

b->a

2)把第二个盘子,从bc

b->c

3)把a上的盘子,从ac

a->c

 

 

 

总结:

n个盘子,从ac

1n-1个盘子从ab

2、最后一个盘子,从ac

3n-1个盘子从bc

 

代码实现:

# encoding=utf-8

 

def hanoi(n,a,b,c):

    if n == 1:

        print a,->,c

    else:

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

        hanoi(1,a,b,c)

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

 

if __name__ == __main__:

    hanoi(3,a,b,c)

 

 

 

python算法-汉诺塔问题

原文:https://www.cnblogs.com/qingqing-919/p/8969795.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!