首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >递归后列表不为空

递归后列表不为空
EN

Stack Overflow用户
提问于 2020-08-23 23:50:06
回答 1查看 57关注 0票数 0

我正在为一位老师做一些离散数学的事情,他让我试着递归地做所有的事情。出于某种奇怪的原因,我为一个函数使用的列表与我上次调用该函数时的列表相同。下面是我的代码:

代码语言:javascript
复制
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

我第一次打电话的时候,没问题。但是我第二次调用它包含了我上次调用它的号码。

EN

回答 1

Stack Overflow用户

发布于 2020-08-23 23:55:09

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

代码语言:javascript
复制
def extended_euclidean_algorithm(a:int, b:int, equations=None):
    equations = equations if equations else []

这样,等式-如果没有设置-是None而不是一个空列表。

查看pythontutor可视化here

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63548988

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档