欧几里德算法的python代码中的奇怪错误

时间:2014-11-07 10:01:53

标签: python python-2.7

我正在尝试编写一个简单的python代码来计算两个整数的最大公约数。

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

这个简单的代码使用Euclid的算法。问题是它不会返回,除非b为零。 这个bug的来源是什么?

3 个答案:

答案 0 :(得分:1)

在递归调用中添加return。

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

答案 1 :(得分:0)

您应该返回函数调用:

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

答案 2 :(得分:0)

您的代码不会返回递归调用的返回值。

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

这应该有用。