Encontré una pregunta y me gustaría probar si puedo escribir una mejor función sin usar la función recursiva y el ciclo while. Pero descubrí que no tengo idea de cómo escribirlo mejor. ¿Hay alguien que pueda darme algunos consejos o inspirarme?
function recursivefunction(i, val) { if (!val) val= 0; if (i < 2) throw new Error('wrong input'); if (i === 2) return 1 / i + val; return recursivefunction(i - 1, val+ 1 / (i * (i -1))); } Write a program doing the same calculation without recursion. function recursivefunction(i, val) { if (!val) val= 0; if (i < 2) throw new Error('wrong input'); if (i === 2) return 1 / i + val; return recursivefunction(i - 1, val+ 1 / (i * (i -1))); } function nonRecursiveFunction(i, val) { if (!val) val = 0; if (i < 2) throw new Error('wrong input'); while(i > 2) { val = val + 1 / (i * (i -1)); i--; } return 1 / i + val; } const recursive = recursivefunction(4, 2); const nonrecursive = nonRecursiveFunction(4, 2); console.log(`Recusrive: ${recursive}, nonrecursive: ${nonrecursive}`); Para ser honesto, reemplazaría la declaración de devolución con val + 0.5 , porque sabemos que i es exactamente 2 y podemos usar un valor constante en lugar de dividir aquí.