「累積」の場合、この式はどのようなパラメータを受け取りますか?
-
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
何が起こっているかを見るために。
所属していません StackOverflow