记录一个有意思的计算案例

2021-06-07  本文已影响0人  Piemon_Jay

需求是这样的


image.png

先说规律:
规律一:第一行一列,第二个两列,第三行三列,第n行n列

规律二:每行第n列和下一行第n列成等差数列,差5,差11,差17

规律三:规律二的差值也成等差数列,差6

规律四:最后一列与上一行最后一列成等差数列,差7

规律查找结束,开始思考逻辑。
想要知道在第几行第几列,先要知道往下排列的数字是什么。于是第一步,把它向下补全。
把整个数据看成一个二维数组,行为索引,列为子数组的索引:

        var arr = [[6]];   //设置初始值
        for (var i=1;i<1000;i++) {   //假设行数是1000
            arr.push([]);    //添加一个数组项,意为新的一行
            for (var j=0;j<i;j++) {  //因为规律一,所以 j<i
                arr[i].push(arr[i-1][j]+5+6*[j])   //进行差值计算,计算除最后一列外的值,添加进数组
            }
            arr[i].push(arr[i-1][arr[i-1].length-1]+7) //计算最后一列的值,添加进数组
        }
        console.log(arr);  //1000行补全完成

给你们感受下:


image.png

下面要做的就是计算想要的数字在第几行第几列了

        for (var x=0;x<arr.length;x++) {   //循环arr不用多说吧
            for (var y=0;y<arr[x].length;y++) {   //循环数组项,得到每项具体数值
                if (arr[x][y]==643) {   //判断是否为目标值
                    alert("第"+(x+1)+"行"+"第"+(y+1)+"项")   //输出
                }
            }
        }

到此,over。

上一篇 下一篇

猜你喜欢

热点阅读