Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/391.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
了解返回2个值的JavaScript函数_Javascript_Recursion - Fatal编程技术网

了解返回2个值的JavaScript函数

了解返回2个值的JavaScript函数,javascript,recursion,Javascript,Recursion,我有一个函数,可以找到2个整数的最大公约数。我不明白返回最大公约数(b,(a%b))中发生了什么;部分 如果我做了最大公约数(8,12),我得到了4,这是正确的,但是当我试图计算返回的最大公约数(b,(a%b));第一部分得到(12,(8%12)),它简化为(12,0),这怎么等于4 // Finds greatest common divisor function greatestCommonDivisor(a, b) { if (b == 0) { return a;

我有一个函数,可以找到2个整数的最大公约数。我不明白返回最大公约数(b,(a%b))中发生了什么;部分

如果我做了最大公约数(8,12),我得到了4,这是正确的,但是当我试图计算返回的最大公约数(b,(a%b));第一部分得到(12,(8%12)),它简化为(12,0),这怎么等于4

// Finds greatest common divisor
function greatestCommonDivisor(a, b) {
    if (b == 0) {
        return a;
    }

    return greatestCommonDivisor(b, (a % b));
}

这是一个递归函数。它不返回两个值,它在使用不同(较小)参数反复调用自身后返回
a
,直到
b
等于
0
(这意味着不能再除法或取模)。

这是一个递归函数。它不返回两个值,在使用不同(较小)参数反复调用自身后返回
a
,直到
b
等于
0
(这意味着,您不能再除法或取模)。

函数使用递归调用自身,直到满足返回实际答案的基本条件为止

最大公约数(8,12)
的情况下,出现以下情况:

  • b!=所以调用greatestcommondivisior(12,8%12)//8%12=8
  • b!=0所以调用greatestcommondivisior(8,12%8)//12%8=4
  • b!=所以调用greatestcommondivisior(4,8%4)//8%4=0
  • b==0所以返回4

  • 函数使用递归调用自身,直到满足返回实际答案的基本条件

    最大公约数(8,12)
    的情况下,出现以下情况:

  • b!=所以调用greatestcommondivisior(12,8%12)//8%12=8
  • b!=0所以调用greatestcommondivisior(8,12%8)//12%8=4
  • b!=所以调用greatestcommondivisior(4,8%4)//8%4=0
  • b==0所以返回4

  • 这是求两个数之间最大公约数的基本算法


    该函数使用另外两个参数返回对自身的调用,而不是像您所想的那样返回两个值(b,(a%b))。

    这是一个基本算法,用于找出两个数字之间的最大公约数


    该函数使用另外两个参数返回对自身的调用,而不是像您所想的那样返回两个值(b,(a%b))

    8%12
    8
    (而不是
    0
    ),因此下一个调用是
    最大公因子(12,8)
    。然后你有
    (8,12%8)
    ,它是
    (8,4)
    ,等等,直到
    b
    0
    并且
    a
    被返回。
    8%12
    8
    (不是
    0
    ),所以下一个调用是
    最大公因子(12,8)
    。然后你有
    (8,12%8)
    ,它是
    (8,4)
    ,等等,直到
    b
    0
    并且
    a
    被返回。直到
    b==0
    ,实际上:)应该是,我同意,但是‘污染。直到b==0,实际上。。)应该是,我同意,但是“污点”。