关于汉诺塔的递归算法

前面在Topcoder上面看到一道题,是用到递归,于是说仔细学习一下递归算法,想到汉诺塔应该是最入门的递归,结果折腾了半天写不出来 。最后去找了个正确答案。最后虽然似乎看懂了,但自问个人真是写不出来。所以就贴在这里,算是对自己的一种鞭策吧!


def hanoi(n,list_from, list_to=[], list_buf=[]):
    global count
    if n > 0:
        hanoi(n -1 ,list_from,list_buf,list_to)
        if list_from:
            list_to.append(list_from.pop())
            print list_from, list_to, list_buf
            count += 1
        hanoi(n -1, list_buf,list_to,list_from)
count = 0        
list1 = range(4,0,-1)
list_to = []
hanoi(4,list1, list_to)
print list_to, count
    原文作者: 汉诺塔问题
    原文地址: https://blog.csdn.net/sunbirds9/article/details/41961645
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞