我有两段python代码,找到两个正整数' GCD。
这是正确的:
def gcdRecur(a, b):
if b == 0:
return a
return gcdRecur(b, a%b)
这是一个有bug的人:
def gcdRecur(a, b):
a = max(a, b)
b = min(a, b)
if b == 0:
return a
return gcdRecur(b, a%b)
很容易看出这两段代码之间的差异。我知道没有必要添加
a = max(a, b)
b = min(a, b)
在控制流程之前。我在后面的代码中找不到任何逻辑错误,但它打印出错误的结果。
------use former code find GCD of 182 ans 224------
print out 14
------use former code find GCD of 182 ans 224------
print out 224(wrong answer)
所以我猜它可能与python中的递归原理有关,我根本不知道。任何人都可以帮助我并告诉我T T是什么。
谢谢。
答案 0 :(得分:0)
问题是,当您致电a = max(a,b)
且b是最大值时,旧的a
将会丢失,a
将等于b
,这会导致{gcd(b,b) == b
1}}