python利用递归解决汉诺塔问题,求大神解释一下代码

python利用递归解决汉诺塔问题,求大神解释一下代码,第1张

这是一个典型的递归程序

当前仔陵只有一层的时候,直接把x放到慧戚z上结束

当大于1层的时候,先把x和z放到y上,然后继续递归

把y放到戚银x上,然后放到z上,结束处理

def my_print(args):

print args

def move(n, a, b, c):

my_print ((a, '-->', c)) if n==1 else (move(n-1,a,c,b) or move(1,a,b,c) or move(n-1,b,a,c))

注释:汉诺塔模型输入move (n, 'a', 'b', 'c')

例如n=3

move(2,a,c,b)自循环

move(1,a,b,c)

move(2,b,a,c) 自循环

循环完毕,输出

你猛败搜这段代码也是枝历类似自循环枯做

#-*- coding:utf-8 -*-

count = 0

def hano():

    

    def hanoi(n,x,y,z):

        global count

        count += 1

        if n == 1:

            print('Monving %d' % n, 'from ',x,'to',z)

    瞎悔    else:

            hanoi(n-1,x,z,y)

            print('Monving %d' % n,  'from ',x,'to',z)

           贺神闭 hanoi(n-1,y,x,z)

    return hanoi

n = int(input("请输入汉诺塔的层数 :禅裂"))

hano()(n,'source','helper','target')

print("The total number of steps required is: ",str(count))

-----------分-割-线-是-我----------------

复制分割线以上的代码,保存为hannoi.py,在python 3 下运行,得到结果如题所示。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8268592.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-14
下一篇 2023-04-14

发表评论

登录后才能评论

评论列表(0条)

保存