汉诺塔是比较经典的递归题目,此题陷井在于,在一个函数里,要先后递归两次。利用参数位置转变,达到输出路径的效果。
def move(n,x,y,z):#x借助y移到z if(n==1): print ‘%s -> %s‘%(x,z) else: move(n-1,x,z,y)#先把N-1借助z移到y print ‘%s -> %s‘%(x,z) #再把x直接移到z上 move(n-1,y,x,z)#再把y上的n-1 借助x移到Z上 move(3,‘a‘,‘b‘,‘c‘)
Posted yangxiao-tech
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了汉诺塔递归相关的知识,希望对你有一定的参考价值。
汉诺塔是比较经典的递归题目,此题陷井在于,在一个函数里,要先后递归两次。利用参数位置转变,达到输出路径的效果。
def move(n,x,y,z):#x借助y移到z if(n==1): print ‘%s -> %s‘%(x,z) else: move(n-1,x,z,y)#先把N-1借助z移到y print ‘%s -> %s‘%(x,z) #再把x直接移到z上 move(n-1,y,x,z)#再把y上的n-1 借助x移到Z上 move(3,‘a‘,‘b‘,‘c‘)
以上是关于汉诺塔递归的主要内容,如果未能解决你的问题,请参考以下文章