Implemente una función fractionSum(n) que calcule y devuelva la suma de la siguiente secuencia: 1/n + 1/(n−1) + 1/(n−2) + ⋅⋅⋅ + 1/2 + 1
Por ejemplo, fraccionSuma(5) calcula la siguiente suma: 1/5+1/4+1/3+1/2+1 Y luego devuelve 2.283333333333333
Ni siquiera he comenzado a escribir la función todavía, ya que todavía estoy atascado tratando de descubrir la expresión de bucle correcta. Esto es lo que he hecho hasta ahora:
var sum =0; var fraction = 1; var number = parseInt(prompt("Enter an integer: ", "5")); for ( var counter = 0; counter <= number; counter++) { fraction /= (number - counter); // do I need to declare parseFloat here for decimal# ? sum += fraction; } document.write("The total value is " + sum);El número no coincide en absoluto con el ejemplo. No estoy seguro de cuál es el problema aquí.
Estoy bastante confundido en este momento. Sé que este es un problema básico, pero probé varios códigos y todavía no salió bien.
Muchas gracias
Estás reutilizando la fracción de la iteración anterior y dividiéndola por el siguiente valor. Necesitas una nueva fracción en su lugar:
fraction = 1 / (number - counter); Además, necesita la condición estricta de counter < number en el bucle para evitar la división por cero.
En el ciclo, el contador debe ser menor que el número; de lo contrario, al final habrá división por 0, el resultado será infinito. Prueba esto
let sum = 0; let i = 0; let num = parseInt(prompt("Enter an integer: ", "5")); for(i; i < num; i++ ){ frac = 1 / ( num - i); sum+= frac; }Me lo imaginé. Esto es lo que conseguí:
<script> function fractionSum(number) { var sum =0; for (var counter= 0 ; counter < number; counter++) { sum += 1/(number - counter); } return sum; } var number = parseInt(prompt("Enter the value of n: ", "5")); sum = fractionSum(number); document.write("The fraction sum of order " + number + " is " + sum); </script>Gracias chicos, fue de mucha ayuda