递归全局变量返回

时间:2019-09-02 06:10:10

标签: python recursion

在某种情况下,我想累加并返回该值
但是当我使用递归时,它会重置值
所以我尝试使用全局变量
但它说

  

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

3 个答案:

答案 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

但这是一个坏习惯,因为它将不必要地将内部变量暴露给外部。因此最好的方法是将其作为另一个解决方案中提到的参数传递。