Какие параметры эта формула принимает, когда в «накапливать»?

Этот код скопирован из другого пользовательского вопроса, и мне любопытно, как работает накопление здесь.
Я получаю правильный результат из этого кода, но хотел бы знать, какие параметры принимает 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';
}

0

Решение

Первый аргумент, что lcm примет это накопленное значение до сих пор (который начинается в 1третий аргумент std::accumulate), а вторым аргументом будет элемент в arr, Далее, что угодно lcm Возвращается как первый аргумент и следующий элемент в arr как второй.

Увидеть ссылка Больше подробностей.

Вы могли бы легко написать a а также b на стандартный вывод внутри lcm чтобы увидеть, что происходит.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]