记录一个有意思的计算案例
2021-06-07 本文已影响0人
Piemon_Jay
需求是这样的

先说规律:
规律一:第一行一列,第二个两列,第三行三列,第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行补全完成
给你们感受下:

下面要做的就是计算想要的数字在第几行第几列了
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。