Parâmetros de que essa fórmula tem quando em "acumular"?
-
21-12-2019 - |
Pergunta
Este código é copiado de outro usuário questão e estou curioso para saber como acumular funciona aqui.Eu obter o resultado correto, a partir desse código, mas gostaria de saber o que os parâmetros de lcm, quando em "acumular".O init como Um e a soma da série b?Por favor, ajuda
#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';
}
Solução
O primeiro argumento que lcm
vai tomar é o valor acumulado até então (que começa em 1
, o terceiro argumento de std::accumulate
), e o segundo argumento será um elemento em arr
.Ao lado, o que lcm
retorna é passado como o primeiro argumento e o elemento seguinte na arr
como o segundo.
Ver uma referência para obter mais detalhes.
Você poderia facilmente escrever a
e b
para a saída padrão dentro lcm
para ver o que está acontecendo.