В
декларативном программировании, Вы разъясняете: я хочу, чтобы факториал
n был
n раз факториалом
n-1(как в определении факториала в математике).
Декларативное - это что.
const factorial = (n) => {
return (n === 0) ? 1 : n * factorial(n-1);
}
В
императивном, Вы приказываете четко передвигаться по шагам - умножать это на это, пока идет отсчет и запоминаются какие-то числа.
const factorial = (n) => {
const iter = (counter, acc) => {
return (counter === 0) ? acc : iter(counter - 1, counter * acc);
}
return iter (n, 1);
}
Императивное - это как.