了解Python中针对GCF的Euclid算法的实现
作者:互联网
用于两个数字的GCF的Euclid算法为:GCF(a,b)= GCF(b,mod b).我已经看到了在Python中实现的方法,如下所示:
def gcf(a, b):
return b and gcf(b, a%b) or a
我不明白如何解析此函数,或者具体地讲如何将布尔逻辑应用于整数.例如,gcf(42,56)=14.当我遍历它时,我发现最终递归部分返回零.我遵循那个0或n == n以及0和n ==0.但是,一旦我将一对非零整数与和/或逻辑进行比较,我就不知道会发生什么以及为什么.
有人可以引导我完成此功能吗?
解决方法:
Python布尔运算符’or’和’and’不返回布尔值.它们返回要比较的值之一.
0或n-返回n
0和n-返回0
a和b或c只是在C中实现(a?b:c)语法的一个技巧.
阅读Dive into Python的4.6节,详细了解python的布尔操作和此技巧.
标签:factorization,python,algorithm 来源: https://codeday.me/bug/20191105/1996191.html