|
|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
大家好!我刚接触python不久,学到递归
在汉诺塔那节里,本人脑(xian)洞(de)大(dan)开(teng),想如果在每一步汉诺塔移动方案后面都显示出移动的步数,就是说递归函数里调用自身的次数,那么代码改如何写呢?
请各位大神给出指导!!!
def hanoi_n(n,x,y,z,m):
if n == 1:
m = 1
print(x,'-->',z,m)
else:
m = m+1
hanoi_n(n-1,x,z,y,m)
hanoi_n(1,x,y,z,m)
hanoi_n(n-1,y,z,x,m)
n = int(input('请输入汉诺塔层数: '))
hanoi_n(n,'A','B','C')
代码大概这样,但是无法运行!
看这样:
- i = 0 ##计数用全局变量
- def mov(n, a, b, c):
- global i ##全局变量声明
- if n == 1:
- i = i + 1
- print 'step', i, ':', 'move disk', n, 'from', a, 'to', c
- return
- mov(n-1, a, c, b)
- i = i + 1
- print 'step', i, ':', 'move disk', n, 'from', a, 'to', c
- mov(n-1, b, a, c)
-
- def move(n):
- mov(n, 'A', 'B', 'C')
-
- move(3)
复制代码
输出:
step 1 : move disk 1 from A to C
step 2 : move disk 2 from A to B
step 3 : move disk 1 from C to B
step 4 : move disk 3 from A to C
step 5 : move disk 1 from B to A
step 6 : move disk 2 from B to C
step 7 : move disk 1 from A to C
|
|