我试图通过一个递归函数来计算调用的总次数,这个递归函数生成n个for循环,但是这个变量似乎永远不会改变它的值。你知道吗
a=0
def recursivelooping(times,volumes):
if times==0:
a+=1
else:
for i in range(volumes):
return recursivelooping(times-1,i)
结果应该更像下面的变量a
,但是我总是得到一个零。你知道吗
def multiforloop(volumes):
a=0
for i in range(volumes):
for j in range(i):
for k in range(j):
a+=1
print(a)
如果我理解正确的话,闭包可能是最短的解决方案:
这将同时打印
55
(如n*(n+1)/2)。闭包只是一个函数(这里是f
),伴随着一个环境(一些将名称映射到变量的上下文,这里是a
)。这意味着a
可以从f
内部访问,就像它是一个局部变量一样,但它并不完全是一个局部变量,而是一个free variable编写
a += 1
时,通常的行为是查找名为a
的局部变量,而这里a
是一个自由变量,这就是为什么我们需要添加nonlocal
关键字来指定它。你知道吗相关问题 更多 >
编程相关推荐