美文网首页
递归 汉诺塔

递归 汉诺塔

作者: 大飞哥 | 来源:发表于2015-07-05 21:28 被阅读23次
    # 利用递归函数移动汉诺塔:
    
    # Tower of Hanoi 将A上的圆环按从大到小往上,借助B放到C上
    # move(n,a,b,c):n表示A上圆环数量,显示"A-->C" 这样的形式
    # move(n,a,b,c) = move(n-1,a,c,b) + move(1,a,b,c) + move(n-1,b,a,c) \
    #即 先将n-1块移到B上,再将第n块移到C上,再将B上的n-1块移到C上
    
    
    def move(n,a,b,c):
        if n==1:
            print('{0}-->{1}'.format(a,b))
            global index#必须要显示的声明函数内的变量是全局变量,否则只要赋值,一定会被覆盖,若进行叠加计算,则会找不到值
            index =index + 1
        else:
            move(n-1,a,c,b)
            move(1,a,b,c)
            move(n-1,b,a,c)
    
    if __name__ == '__main__':
        index = 0
        n=int(input('输入圆环个数: '))
        move(n,'A','B','C')
        print(index)
    
    

    相关文章

      网友评论

          本文标题:递归 汉诺塔

          本文链接:https://www.haomeiwen.com/subject/azyyqttx.html