计算循环中的分数和

  • 本文关键字:循环 计算 javascript
  • 更新时间 :
  • 英文 :


实现一个函数fractionSum(n),计算并返回以下序列的和:1/n + 1/(n−1)+ 1/(n−2)+⋅⋅⋅+ 1/2 + 1

例如,fractionSum(5)计算如下的和:1/5+1/4+1/3+1/2+1然后返回2.283333333333333

我甚至还没有开始写函数,因为我仍然在试图找出正确的循环表达式。这是我目前所做的:

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);

与示例中的数字完全不匹配。我不知道这里出了什么问题。

我现在很困惑。我知道这是一个基本的问题,但我已经尝试了多个代码,它仍然不正确。

Thank you so much

您重用了前一次迭代中的分数,并将其除以下一个值。你需要一个新的分数:

fraction = 1 / (number - counter);

同时,在循环中需要严格的counter < number条件来避免除零。

在循环中,counter必须小于number,否则在最后会被0除,结果将是无穷大。试试这个

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;
}

我明白了。这是我得到的:

<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>

谢谢大家,这是非常有用的

最新更新