I'm doing some discrete mathematics stuff for a teacher, he asked me to try and do everything recursively. For some strange reason the list i'm using for a function is the same as it was the last time I called the function. Here's my code:
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
First time I call it, it's Ok. But second time I call it includes the numbers from the last time I called it.
 
     
    