帮我在python中找出最常见的除数算法中的错误

0 algorithm greatest-common-divisor

所以我写了

function gcd(a, b)
  if b <> 0
    gcd (b, a % b)
  else
    return a

print gcd (12, 9)
Run Code Online (Sandbox Code Playgroud)

所以它会:

  1. gcd(12,9)
  2. 9 <> 0表示TRUE
  3. gcd(9,12%9 = 3)
  4. 3 <> 0表示TRUE
  5. gcd(3,9%3 = 0)
  6. 0 <> 0表示FALSE
  7. 返回a为3,但不返回任何内容

你能帮我找到我的错吗?

Ted*_*opp 5

我想你需要这一行:

return gcd (b, a % b)
Run Code Online (Sandbox Code Playgroud)

而不只是:

gcd (b, a % b)
Run Code Online (Sandbox Code Playgroud)

这是我的Python代码,显示了解决方案的实际应用:

>>> def gcd(a,b):
...   if b != 0:
...     return gcd(b, a % b)
...   else:
...     return a
...
>>> print gcd(12,9)
3
>>>
Run Code Online (Sandbox Code Playgroud)

这是Linux上的Python 2.4.3.

  • @Templatar:假设*关于某种语言的*基于其他语言所做的是最快捷的方法;) (3认同)