我正在为一位老师做一些离散的数学工作,他要求我尝试递归地做所有事情。由于某些奇怪的原因,我用于函数的列表与上次调用该函数的列表相同。 这是我的代码:
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
第一次调用它就可以了。但是第二次我叫它包括上次我叫它的号码。
答案 0 :(得分:0)
由于您在参数中设置了列表,因此默认情况下,该列表存在并且可以追加到列表中。
您最好使用:
def extended_euclidean_algorithm(a:int, b:int, equations=None):
equations = equations if equations else []
通过这种方式,方程式-如果未设置-为无,而不是一个空列表。
查看pythontutor可视化here: