在某种情况下,我想累加并返回该值
但是当我使用递归时,它会重置值
所以我尝试使用全局变量
但它说
NameError:名称“ count”未定义
这是我的递归代码
def solution(relation):
global count
df = pd.DataFrame(relation)
for i in range(len(relation[0])):
for j in range(len(relation[0])):
if j != i:
temp = df[i] + df[j]
else:
temp = df[j]
if(len(temp)==len(set(temp))):
count +=1
for jj in range(len(relation)):
relation[jj] = relation[jj][1:]
return solution(relation)
return count
答案 0 :(得分:2)
您还必须在函数外部声明count
。像这样:
count = 0
def my_function(relation)
global count
# code here
答案 1 :(得分:1)
不是将其用作全局变量,而是将其传递给递归然后更新 通过拨打更新的电话号码
例如
def solution(relation, count=0):
""" Your code logic"""
solution(relation, count=count)
答案 2 :(得分:1)
如果您真的想将其用作全局变量,请在函数外部定义它,它将起作用。
count = 0
def solution(relation):
df = pd.DataFrame(relation)
for i in range(len(relation[0])):
for j in range(len(relation[0])):
if j != i:
temp = df[i] + df[j]
else:
temp = df[j]
if(len(temp)==len(set(temp))):
count +=1
for jj in range(len(relation)):
relation[jj] = relation[jj][1:]
return solution(relation)
return count
但这是一个坏习惯,因为它将不必要地将内部变量暴露给外部。因此最好的方法是将其作为另一个解决方案中提到的参数传递。