「累積」の場合、この式はどのようなパラメータを受け取りますか?

StackOverflow https://stackoverflow.com//questions/22051945

  •  21-12-2019
  •  | 
  •  

質問

このコードは別のユーザーの質問からコピーされたものですが、ここで累積がどのように機能するか興味があります。このコードからは正しい結果が得られますが、「accumulate」のときに lcm がどのようなパラメータを取るかを知りたいと思っています。初期値は 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';
}
役に立ちましたか?

解決

最初の引数は、 lcm 取得する値は、これまでの累積値です (開始値は次のとおりです)。 1, の 3 番目の引数 std::accumulate)、2 番目の引数は次の要素になります。 arr. 。次は何でも lcm 戻り値は最初の引数として渡され、次の要素として渡されます。 arr 2番目として。

見る 参考資料 詳細については。

簡単に書くことができます a そして b 内部の標準出力に lcm 何が起こっているかを見るために。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top