【发布时间】:2012-09-22 13:14:31
【问题描述】:
给我函数gcd,定义如下:
def gcd(a, b):
if (0 == a % b):
return b
return gcd(b, a%b)
现在我被要求编写一个递归函数gcd2(a,b),它返回一个包含三个数字(g, s, t) 的列表,其中g = gcd(a, b) 和g = s*a + t*b。
这意味着您将在gcd(a, b) 函数中输入两个值(a and b)。它返回的值等于下一个函数中的g。
这些相同的a 和b 值随后被调用到gcd2(a, b)。然后使用递归部分查找 s 和 t 的值,以便 g = s*a + t*b.
我不知道如何解决这个问题,因为我无法真正想象 "stopping-condition" 会是什么,或者我将通过递归循环来实际找到 @987654335 @ 和 t。谁能帮帮我?
【问题讨论】:
-
为什么三参数递归调用的停止情况与两参数递归调用有任何不同?
-
这个问题真的没有意义。 s 和 t 将有无穷多个解。
-
您可能应该再读一遍这个问题,因为我们无事可做。请添加更多信息!
-
@LoSauer:注意作业标签现在是officially deprecated;不再需要用它标记问题。
-
@wim 确实有道理,你拥有哪一个并不重要。如果您有一对,则可以计算所有对。 en.wikipedia.org/wiki/B%C3%A9zout%27s_identity