Olá pessoal. Fiz o código abaixo em JS para soma dos fatoriais de uma lista dinâmica de parâmetros usando recursividade. Está funcionando, mas gostaria de uma avaliação em relação à lógica que montei, se está bem pensada, onde pode ser melhorada, etc... Imagino que esta função não tenha muita utilidade no dia-a-dia, a ideia foi só para praticar. Pensei em fazer uma função para transformar número em ordinal mas encontrei uma já criada, então instalei e utilizei. Desde já agradeço a atenção. Glauber
require("ordinal-pt-br") let fatorialTotal = 0 let indice = 0
function somaFatorial () {
const parms = [].slice.call(arguments, 0)
if (parms.length === 0) {
console.log(nenhum parâmetro informado
)
fatorialTotal = null
return fatorialTotal
}
let fatorTotal = 0
for (let i = 0; i < parms.length; i++) {
num = parms[i]
let total = calculaFatorial(num)
indice = i + 1
console.log(o fatorial do ${indice.toOrdinal()} parâmetro (${num}) é = a ${total}
)
fatorialTotal = fatorialTotal + total
}
console.log()
console.log(a soma dos fatoriais é igual a :
)
return fatorialTotal
}
function calculaFatorial (num) { if (num < 1) return 1 else return num * calculaFatorial (num - 1) }
console.log(somaFatorial(6, 4, 5, 2, 3))
O resultado é: PS C:\Glauber\Alura\Javascript\codigo-curso> node aula-2/fatorial.js o fatorial do primeiro parâmetro (6) é = a 720 o fatorial do segundo parâmetro (4) é = a 24 o fatorial do terceiro parâmetro (5) é = a 120 o fatorial do quarto parâmetro (2) é = a 2 o fatorial do quinto parâmetro (3) é = a 6
a soma dos fatoriais é igual a : 872