我的函数是否正确使用递归?

时间:2017-08-13 23:07:47

标签: python recursion

我需要使用递归函数来查找用户输入的两个数字之间的最大公分母。 递归对我来说仍然有点混乱,我被告知我有租约不使用它。 以下函数是否计为使用递归?我还是新编码。

def gcd(m, n):

   #Determine bases
   if m==0:
      return n
   if n==0:
      return m

   #Find the lowest number
   if m > n:
      lowest = n
   else:
      lowest = m

   for i in range(1,lowest + 1):
      if((m % i == 0) and (n % i == 0)):
         gcd = i

   return gcd

def main():
   # take input from the user
   num1 = int(input("Enter first number: "))
   num2 = int(input("Enter second number: "))

   print("The GCD. of", num1,"and", num2,"is", gcd(num1, num2))

main()

1 个答案:

答案 0 :(得分:5)

确定最大公约数的常用递归方法是

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

>>> gcd(100, 75)
25

迭代方法是

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

>>> gcd(100, 75)
25

请注意,不同之处在于递归方法会一遍又一遍地调用自身,直到遇到基本情况(b == 0)。迭代方法有一个while循环,这就是迭代的原因。