Python 无法理解“def gcd()的代码”
更新:一旦我不知道3%4=0 我认为它是这样工作的:Python 无法理解“def gcd()的代码”,python,python-2.7,greatest-common-divisor,Python,Python 2.7,Greatest Common Divisor,更新:一旦我不知道3%4=0 我认为它是这样工作的: gcd(3,4) => while 4: => 3,4 = 4, 3%4 => 让我们一步一步地看一遍 def gcd(a, b): 这定义了一个新函数gcd,它在计算中使用变量a和b。必须在函数开始之前设置这些值 while b: 除非一个数字等于0,否则它被认为是真的。因此,如果b=0,那么这部分代码将不会执行 为了清楚起见,我将把它扩展到两行 a = b b = a%b 第一部分是不言自明的,第二部分显然不是
gcd(3,4) => while 4: => 3,4 = 4, 3%4 =>
让我们一步一步地看一遍
def gcd(a, b):
这定义了一个新函数gcd,它在计算中使用变量a和b。必须在函数开始之前设置这些值
while b:
除非一个数字等于0,否则它被认为是真的。因此,如果b=0,那么这部分代码将不会执行
为了清楚起见,我将把它扩展到两行
a = b
b = a%b
第一部分是不言自明的,第二部分显然不是。%b是mod b模的python表达式,模是数学函数,在最基本的状态下,返回两个数的剩余部分。例如,12%5=2;12/5的剩余部分是2
但在编写实际代码时,请确保它们保持在同一行。在一行中,由于元组打包和解包,作业同时进行。在两行中,作业一个接一个地进行,这会给出错误的答案b将始终为0-
这些行无限期地重复,直到变量b等于0。之后,代码执行以下操作:
return a
它将值a返回给程序的其余部分,以便以后可以使用。它还结束了函数
def gcd(a, b):
c = a%b
if c == 0:
return b
return gcd(b, c)
阅读更多关于欧几里得方程和。。。因为我喜欢密码学和数学,“扩展”版可以到
我希望这是有帮助的 让我们一步一步地看一遍
def gcd(a, b):
这定义了一个新函数gcd,它在计算中使用变量a和b。必须在函数开始之前设置这些值
while b:
除非一个数字等于0,否则它被认为是真的。因此,如果b=0,那么这部分代码将不会执行
为了清楚起见,我将把它扩展到两行
a = b
b = a%b
第一部分是不言自明的,第二部分显然不是。%b是mod b模的python表达式,模是数学函数,在最基本的状态下,返回两个数的剩余部分。例如,12%5=2;12/5的剩余部分是2
但在编写实际代码时,请确保它们保持在同一行。在一行中,由于元组打包和解包,作业同时进行。在两行中,作业一个接一个地进行,这会给出错误的答案b将始终为0-
这些行无限期地重复,直到变量b等于0。之后,代码执行以下操作:
return a
它将值a返回给程序的其余部分,以便以后可以使用。它还结束了函数
def gcd(a, b):
c = a%b
if c == 0:
return b
return gcd(b, c)
阅读更多关于欧几里得方程和。。。因为我喜欢密码学和数学,“扩展”版可以到
我希望这是有帮助的 这里是gcd函数的递归版本
def gcd(a, b):
c = a%b
if c == 0:
return b
return gcd(b, c)
这是gcd函数的递归版本
def gcd(a, b):
c = a%b
if c == 0:
return b
return gcd(b, c)
这是一种执行。你不清楚Python代码的细节,还是算法本身?扩展的欧几里德算法-有史以来最好的算法!是的,它确实在RSA加密环境中有一个实际应用。这是的一个实现。你不清楚Python代码的细节,还是算法本身?扩展的欧几里德算法-有史以来最好的算法!是的,它确实在RSA加密环境中有实际应用。请注意,在实践中,您不能像那样将a,b=b,a%b拆分为两行。我非常感谢您的帮助@蒂姆,你为什么不能那样做?他们根本不是一回事吗?@xxmbanexx:他们不是一回事。在一行中,由于元组打包和解包,作业同时进行。在两行中,作业一个接一个地进行,这会给出一个不正确的答案b将始终为0。@tim great-谢谢您的帮助。我在回答中引用了这句话-我希望你能同意。作为一个提示,实际上你不能像那样把a,b=b,a%b分成两行。我非常感谢你的帮助@蒂姆,你为什么不能那样做?他们根本不是一回事吗?@xxmbanexx:他们不是一回事。在一行中,由于元组打包和解包,作业同时进行。在两行中,作业一个接一个地进行,这会给出一个不正确的答案b将始终为0。@tim great-谢谢您的帮助。我在回答中引用了这句话——我希望你能接受。