我有两段python代码查找两个正整数的GCD。你知道吗
以下是正确的答案:
def gcdRecur(a, b):
if b == 0:
return a
return gcdRecur(b, a%b)
这是一个错误:
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中的递归原理有关,我对此一无所知。谁能帮帮我,告诉我发生了什么事吗
谢谢你。你知道吗
问题是当您调用
a = max(a,b)
并且b是最大值时,旧的a
将丢失,并且a
将等于b
,这将导致gcd(b,b) == b
相关问题 更多 >
编程相关推荐