4-3请老师检查

4-3请老师检查

<!DOCTYPE html>

<html>


<head>

    <meta charset="utf-8">

    <title>累加算法</title>

</head>


<body>

    <script>

        // 实现1 + 1/2 + 2/3 + 3/4 + 4/5 ... n-1/n的和


        var n = Number(prompt('请输入数字n的值'));


        // 累乘器-制作每一项

        var item = 1;

        // 累加器-最后的答案

        var sum = 0;


        // 遍历

        for (var i = 1; i <= n; i++) {

            item *= i / (i + 1);

            sum += item;

        }

        alert(sum + 1);

    </script>

</body>


</html>

搜索

复制

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
imooc_慕慕 2022-06-19 10:21:33

同学你好,代码结果错误,思路想复杂了,按照同学的思路,当i =2;的时候,结果为 1+1/2+1/3;结果会多加一项;导致结果错误;参考如下思路;

题目中已经给到了规律,每一项为n-1/n; 可以总结出,n要从2开始,

然后给sum一个初始值;var sum =1;

当 n =2  ;结果为 1+1/2;

当 n =3  ;结果为  1+1/2+2/3;

当 n =4  ;结果为 1+1/2+2/3+3/4

由此可以得出

判断条件为:i = 2 ; <=n ; i++;  结果为 sum += (i-1)/i;由此我们可以把代码总结在一起;


代码参考如下:


var sum = 1,

      n = Number(prompt('请输入数字n的值'));

for (var i = 2; i <= n; i++) {

console.log( (i - 1) / i)

sum += (i - 1) / i;

 }

alert(sum)


祝学习愉快~


  • 提问者 清夏_ #1

    <script>

            // 实现1 + 1/2 + 2/3 + 3/4 + 4/5...n-1/n的和


            // 请用户输入数字

            var n = Number(prompt('请输入任意数字'));

            // 累加器

            var sum = 0;

            // 累乘器

            var item = 1;

            for (i = 2; i <= n; i++) {

                item *= (n - 1) / n;

                sum += item;

            }

            // 输出结果

            alert(1 + sum);

        </script>



    我这样写行不行老师   我照你的把 i 的初值改成了2

    搜索

    复制

    2022-06-20 23:55:30
  • imooc_慕慕 回复 提问者 清夏_ #2

    同学你好,这样写不可以的,我们来验证一下,打印一下这个item,如下图:

    https://img1.sycdn.imooc.com//climg/62b1219009cda4ab04270380.jpg

    当n = 3的时候;

    https://img1.sycdn.imooc.com//climg/62b12210095755ac06270232.jpg


    而正确的结果为:

    https://img1.sycdn.imooc.com//climg/62b1236909a6e42003810252.jpg

    https://img1.sycdn.imooc.com//climg/62b1227b0984147006750176.jpg


    item累加相乘,不可以这样写呢;

    正确方法,参考如下:


    var sum = 1,

          n = Number(prompt('请输入数字n的值'));

    for (var i = 2; i <= n; i++) {

        console.log( (i - 1) / i)

        sum += (i - 1) / i;

     }

    alert(sum)


    祝学习愉快~




    2022-06-21 09:49:28
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星

相似问题

登录后可查看更多问答,登录/注册

请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师