在“累积”时该公式采用什么参数?

时间:2014-02-26 19:58:05

标签: c++ std accumulate

此代码是从另一个用户问题中复制而来的,我很好奇积累如何在这里工作。 我从这段代码中得到了正确的结果,但是想知道lcm在“累积”时采用了什么参数。 init为A,范围之和为b?请帮忙

#include <numeric>

int gcd(int a, int b)
{
    for (;;)
    {
        if (a == 0) return b;
        b %= a;
        if (b == 0) return a;
        a %= b;
    }
}

int lcm(int a, int b)
{
    int temp = gcd(a, b);

    return temp ? (a / temp * b) : 0;
}

int main()
{
    int arr[] = { 5, 7, 9, 12 };

    int result = std::accumulate(arr, arr + 4, 1, lcm);

    std::cout << result << '\n';
}

1 个答案:

答案 0 :(得分:1)

lcm将采用的第一个参数是到目前为止的累计值(从1开始,std::accumulate的第三个参数),第二个参数将是arr。接下来,无论lcm返回的是第一个参数,还是arr中的下一个元素作为第二个参数。

有关详细信息,请参阅a reference

您可以轻松地将ab写入lcm内的标准输出,以查看正在发生的事情。