Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 无法理解“def gcd()的代码”_Python_Python 2.7_Greatest Common Divisor - Fatal编程技术网

Python 无法理解“def gcd()的代码”

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 第一部分是不言自明的,第二部分显然不是

更新:一旦我不知道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
第一部分是不言自明的,第二部分显然不是。%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-谢谢您的帮助。我在回答中引用了这句话——我希望你能接受。