码迷,mamicode.com
首页 > 编程语言 > 详细

基于Python的汉诺塔算法

时间:2016-09-23 23:14:19      阅读:258      评论:0      收藏:0      [点我收藏+]

标签:

首先贴出Python编写的汉诺塔算法的代码:

def hanoti(n,x1,x2,x3):
    if(n == 1):
        print(‘move:‘,x1,‘-->‘,x3)
        return
    hanoti(n-1,x1,x3,x2)
    print(‘move:‘,x1,‘-->‘,x3)
    hanoti(n-1,x2,x1,x3)

hanoti(3,‘A‘,‘B‘,‘C‘)   

汉诺塔问题归根结底就是一个循环问题,循环包括两大要素:循环体、循环结束条件

首先分析汉诺塔算法的思想:

第一步:若想将n个圆盘中最大的圆盘从A塔放到C塔,需要借助B塔放置其余的n-1个圆盘

第二步:再把B塔看做初始条件的A塔,将B塔上的n-1个圆盘依据规则放置到C塔上,这一步就是一个循环问题

依据代码来分析:

首先定义函数hanoti(n,x1,x2,x3),该函数作用是将n个圆盘从第一个参数(这里为x1)放到第三个参数(这里为x3)上,

if判断是循环的循环结束条件,意思为若只有一个圆盘,只需要将他从第一个参数(这里为x1)放到第三个参数(这里为x3)上即可,

如果不满足循环结束条件,函数继续执行,

hanoti(n-1,x1,x3,x2)语句就是执行第一步的过程,即将除最大圆盘外的n-1个圆盘从第一个参数(这里为x1)放到第三个参数(这里为x2)上,

然后输出表示移动结束的print语句,

这一句结束后,表示x2上想在放置着所有剩余的n-1个圆盘,

再继续循环hanoti(n-1,x2,x1,x3)语句,执行第二步过程,即将剩余的n-1个圆盘按同样的方法从从第一个参数(这里为x2)放到第三个参数(这里为x3)上

如此循环往复,完成汉诺塔问题

基于Python的汉诺塔算法

标签:

原文地址:http://www.cnblogs.com/mzcletics/p/5901784.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!