美文网首页
连续奇数三角形单行求和

连续奇数三角形单行求和

作者: 五斗米呀 | 来源:发表于2019-01-08 22:21 被阅读0次
    微信截图_20190108222016.png

    其实这道题目考察的并不是代码能力,而是找规律~

    ①首先,这是一个连续奇数的三角,第一反应是十分著名的杨辉三角,说明这都是有规律可循的,对于每一行甚至每一斜线。

    ②题目要求:输入数字n,计算对应行的和(就算英语阅读有问题,实例也是很容易理解的)

    既然,题目要求和基本思想已经把握了,那么就要进行下一步了

    ③找规律:每行第一个数为--n(n-1)+1,第n行就有n个数,依次加2;

    ④实现:(规律已经找到了,但是还是会踩坑的~)

    a.

    function rowSumOddNumbers(n) {
    var sum = n(n-1)+1;
    for(var i=1;i<n;i++){
    sum = sum +sum +2
    i
    //代码可精简,主要突出思路错误
    }
    return sum;
    }
    这是第一版出来的思路,自己觉得完全没有问题,甚至仔细斟酌了i的取值,确保不会加错2的次数

    然而,这是犯了一个非常想当然的错误,for循环中,sum被重新赋值,再次进入循环,sum已经不是从前的那个sum了,加重了呀!!!所以调试的时候,数值远远超出预算,我甚至都怀疑自己是不是不小心加了幂指数了

    b.ok,重新思考,啥都不如烂笔头,开写,找泛例然后以特例进行验证

    首先,num为第n行第一个数

    则该行各数为:

    num

    num+2*1

    num+2*2

    num+2*3

    ...

    num+2*(n-1);

    则 该行总和 sum = num+num+21+num+22+num+23+...+num+2(n-1)--->化简为:sun=nnum+2[1+(n-1)](n-1)/2=n(num+n-1);

    所以最终代码为

    function rowSumOddNumbers(n) {
    // TODO
    var sum = n(n-1)+1;
    var num = sum+n-1;
    return n
    num;
    }
    仰天长叹,这要是不写明白了,以后我想破脑袋,掉光秀发,大概也搞不懂为啥这么写代码;
    原文:https://blog.csdn.net/ni_meng_/article/details/86101822

    相关文章

      网友评论

          本文标题:连续奇数三角形单行求和

          本文链接:https://www.haomeiwen.com/subject/afdirqtx.html