鱼C论坛

 找回密码
 立即注册
查看: 2114|回复: 1

我想计算一个递归使用的次数该怎么办

[复制链接]
发表于 2017-6-1 17:49:00 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
下面是汉诺塔的程序,我改了一下里面加了一个count变量 ,我感觉我这样写count变量会被闭包

count =0
def a(n,x,y,z):
       
        if n==1:
                count+=1
                print(x,'--->',z),
        else:
                count+=1
                a(n-1,x,z,y)#将前n-1个盘子移到Y上
                print(x,'--->',z),#将最底下的那个移到z 上
                a(n-1,y,x,z)
                #将n-1移到z上   不管怎么移动都是从形参x 移到形参z 一次只能移动一个形参要闲置
        return count
n =int(input())
a(n,'X','Y','Z')
print(a(n,'X','Y','Z'))




我输入了参数n=3
输出结果是
Traceback (most recent call last):
  File "111.py", line 15, in <module>
    a(n,'X','Y','Z')
  File "111.py", line 8, in a
    count+=1
请问该怎么办
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-6-1 19:07:59 | 显示全部楼层
  1. count = 0
  2. def a(n, x, y, z):
  3.     global count
  4.     if n == 1:
  5.         count += 1
  6.         print(x, '--->', z),
  7.     else:
  8.         count += 1
  9.         a(n - 1, x, z, y)  # 将前n-1个盘子移到Y上
  10.         print(x, '--->', z),  # 将最底下的那个移到z 上
  11.         a(n - 1, y, x, z)
  12.         # 将n-1移到z上   不管怎么移动都是从形参x 移到形参z 一次只能移动一个形参要闲置
  13.     return count
复制代码


加个global
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-17 10:32

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表