帮我找出python中最大公约数算法中的错误



所以我写了

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

所以它是这样的:

  1. 肾小球囊性肾病(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. 返回值为3的a,但它不返回任何值

你能帮我找出我的错误吗?

我认为你需要这一行:

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
>>>

最新更新