Quali parametri questa formula prende quando si è "accumulabile"?
-
21-12-2019 - |
Domanda
Questo codice viene copiato da un'altra domanda utente e curioso come si accumula qui funziona qui. Ottengo il risultato corretto da questo codice, ma vorrei sapere quali parametri che LCM prende quando si è "accumulabile".Init come A e la somma della gamma come B?Per favore aiuto
#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';
}
. Soluzione
Il primo argomento che lcm
prenderà il valore accumulato finora (che inizia a 1
, il terzo argomento di std::accumulate
) e il secondo argomento sarà un elemento in arr
.Successivamente, qualsiasi restituzione lcm
è passata come primo argomento e il prossimo elemento in arr
come secondo.
Vedi Un riferimento per maggiori dettagli.
È possibile scrivere facilmente a
e b
all'uscita standard all'interno lcm
per vedere cosa sta succedendo.