如何在Python中使用堆栈方法编写Euclid算法?

2024-06-01 09:05:22 发布

您现在位置:Python中文网/ 问答频道 /正文

在这里寻求帮助

有人知道如何将欧几里德算法的递归版本(找到最大公约数GCD)转换成使用堆栈的版本吗

以下是欧几里德算法的递归版本:

def euclid_gcd(a, b):
    if a == 0:
        return b
    return gcd(b%a, a)

现在,我有一个开始代码可以转换为欧几里德算法的堆栈版本:

def euclid_gcd_stack(a, b):
    s = Stack()
    s.push(a)
    s.push(b)

    while s.count() > 0:
        b = s.pop()
        a = s.pop()

 <code to be continued here>

先谢谢你!:)


Tags: 代码版本算法returnifstack堆栈def
1条回答
网友
1楼 · 发布于 2024-06-01 09:05:22
def euclid_gcd_stack(a, b):
    s = Stack()
    s.push(a)
    s.push(b)

    while s.count() > 0:
        b = s.pop()
        a = s.pop()

        if a > b:
            a, b = b, a
        if a == 0:
            return b
        else:
            s.push(a)
            s.push(b - a)
``

相关问题 更多 >