您当前的位置:首页 > 计算机 > 编程开发 > Python

【Python】实现汉诺塔

时间:02-04来源:作者:点击数:

题目:

有A,B,C三根针,将A针上N个从小到大叠放的盘子移动到C针,一次只能移动一个,小盘子必须在大盘子上面。求最少移动方案。

思路:

试想这个过程中,必然会经历那么一个步骤,即有一大坨N-1个盘子在B针这个中转站,而我们正将最大那个盘子(即第N个盘子)从A针移动至C针。

N-1个盘子被移动了两次才能到C,那么推而广之就是

F(n) = 2 * F(n-1) +1

实现:

#!/usr/bin/env python3
# -*- UTF-8 -*-

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)

move(3, 'A', 'B', 'C')

结果:

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门