python算法-汉诺塔问题

汉诺塔问题

 

初始状态:

 

思考:当盘子的个数是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')

 

 

 

posted @ 2018-04-28 22:14  小七Libra  阅读(294)  评论(0编辑  收藏  举报