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

标签 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 <> 0 表示真
  3. gcd(9, 12 % 9 = 3)
  4. 3 <> 0 表示正确
  5. gcd(3, 9 % 3 = 0)
  6. 0 <> 0 表示错误
  7. 返回 a 是 3 但它什么都不返回

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

最佳答案

我想你需要这一行:

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。

关于algorithm - 帮我找出 python 中最大公约数算法中的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7337807/

相关文章:

c# - 罗马数字减法不转换

javascript - 当我们使用 css 选择器时,浏览器如何找到集合元素

arrays - 有没有办法衡量列表的排序情况?

java - 如何使用不同类中返回的值?

algorithm - 面试题: Finding Next and Previous characters in a given string?

java - 无法找出在图形内移动的正确算法

c - 找到最小公倍数

c - 为什么会出现浮点异常 8?

c++ - 求最大公约数的程序