Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 扩展欧几里德算法的实现_Python_Algorithm_Computer Science - Fatal编程技术网

Python 扩展欧几里德算法的实现

Python 扩展欧几里德算法的实现,python,algorithm,computer-science,Python,Algorithm,Computer Science,为什么下面的实现失败了 这是中的实现,看起来类似于您的 def egcd(a, b): if a == 0: return (b, 0, 1) else: g, x, y = egcd(b % a, a) return (g, y - (b // a) * x, x) 从报税表中删除{}。 看看d1,x1,y1=extended_euclid(b,a%b),如果将{}保存在return中,您没有足够的值来解包,您可以定义失败吗?我

为什么下面的实现失败了


这是中的实现,看起来类似于您的

def egcd(a, b):
    if a == 0:
        return (b, 0, 1)
    else:
        g, x, y = egcd(b % a, a)
        return (g, y - (b // a) * x, x)
从报税表中删除
{}

看看
d1,x1,y1=extended_euclid(b,a%b)
,如果将
{}
保存在
return

中,您没有足够的值来解包,您可以定义失败吗?我得到了错误的结果。您是否尝试使用调试器来找出哪里出了问题?是否有返回集合的原因?你意识到这是一种无序的数据类型,对吗?@ChrisMueller,谢谢!你可以把它写下来作为答案,这样我就可以批准它了!谢谢瓦茨拉夫·斯特鲁哈尔!很高兴它有帮助:)你介意把这个答案标记为解决方案吗?谢谢@奥利弗
def egcd(a, b):
    if a == 0:
        return (b, 0, 1)
    else:
        g, x, y = egcd(b % a, a)
        return (g, y - (b // a) * x, x)
def extended_euclid(a,b):
    if b == 0:
        return a, 1, 0

    d1,x1,y1 = extended_euclid(b, a % b)
    d = d1
    x = y1
    y = x1 - math.floor(a/b) * y1
    return d, x, y