我需要使用递归函数来查找用户输入的两个数字之间的最大公分母。 递归对我来说仍然有点混乱,我被告知我有租约不使用它。 以下函数是否计为使用递归?我还是新编码。
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()
答案 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
循环,这就是迭代的原因。