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

时间:2011-09-07 17:10:04

标签: algorithm greatest-common-divisor

所以我写了

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

print gcd (12, 9)

所以它是:

  1. gcd(12,9)
  2. 9&lt;&gt; 0表示TRUE
  3. gcd(9,12%9 = 3)
  4. 3&lt;&gt; 0表示TRUE
  5. gcd(3,9%3 = 0)
  6. 0&lt;&gt; 0表示FALSE
  7. 返回a为3,但不返回任何内容
  8. 你能帮我找到我的错误吗?

1 个答案:

答案 0 :(得分:5)

我认为你需要这一行:

return gcd (b, a % b)

而不只是:

gcd (b, a % b)

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

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

这是Linux上的Python 2.4.3。