递归列表后不为空

时间:2020-08-23 15:50:05

标签: python

我正在为一位老师做一些离散的数学工作,他要求我尝试递归地做所有事情。由于某些奇怪的原因,我用于函数的列表与上次调用该函数的列表相同。 这是我的代码:

def extended_euclidean_algorithm(a:int, b:int, equations=list()):
    #This line is just for debugging and checking that my hipothesis was correct
    print (len(equations))
    if b==0:
        return
    if a<b:
        b,a=a,b
    quotient=a//b
    remainder=a%b
    equations.append(f"{a}={quotient}*{b}+{remainder}")
    if extended_euclidean_algorithm(b, remainder, equations):
        return equations
    for i, equation in enumerate(equations):
        equations[i]=equation.split('+')
        equations[i][0]=equations[i][0].split('=')
        equations[i][0]="-".join(equations[i][0])
        equations[i]='='.join(equations[i])
    return True

第一次调用它就可以了。但是第二次我叫它包括上次我叫它的号码。

1 个答案:

答案 0 :(得分:0)

由于您在参数中设置了列表,因此默认情况下,该列表存在并且可以追加到列表中。 您最好使用:

def extended_euclidean_algorithm(a:int, b:int, equations=None):
    equations = equations if equations else []

通过这种方式,方程式-如果未设置-为无,而不是一个空列表。

查看pythontutor可视化here