刚开始看到这道题的时候一点头绪都没有,看到的同学的画图之后明白了一点,代码部分是参考的Java的,最后这道题做出了。过程很有趣。接下来,看看是怎么来解析这道题的 :
首先我们来看看3*3矩阵图是什么样的:
求一个3*3矩阵对角线元素之和,利用双重循环控制输入二维数组为了便于找出规律,我用了1–9的数字规律的排列,然后我们在来观察我在[ ] 中的标记,就可以发现,第一条对角线是有规律的。接着我们在进行观察,也会发现以下规律,再总结到算法中,这道题就解开了。 在下面的实例中我已经写了注释。顺着看下去 解题思路就出来了。

function tangele(){
// 1.求一个33矩阵对角线元素之和,利用双重循环控制输入二维数组
alert("请在输入框中输入数字,来组成3
3的矩阵数组");
var arr = []; //我们先定义一个空数组,用来存放添加的数组元素
var sum = 0;
for(var i = 0; i < 3;i++){ //循环3次 每次循环创建一个空数组
arr[i] = [];
for(var j = 0;j < 3;j++){ // 循环三次 每次循环将录入的数据写入数组中
arr[i][j] = +prompt(“请输入数据:”);
sum += arr[i][j];
}
}
// console.log(sum);
var sum1 =0;
var sum2 =0;
for(var a = 0;a < arr.length; a++){ //循环外层数组
for(var b =0; b < arr[a].length; b++){ // 循环内层数组
if(a==b){ //判断二维数组的下标 在一维和二维数组的相同时 取这两个下标中的数组所存的值
sum1 +=arr[a][b]; //将取到的数组中值赋给 sum1 并计算取到的数组值的和 (sum1 的和就是矩阵里主对角线元素的和)
// 循环三次,每次循环到数值相等时,将值赋值给sum1
}
if(b == arr.length-1-a){
sum2 +=arr[a][b]; //将取到的数组中值赋给 sum1 并计算取到的数组值的和 (sum2 的和就是矩阵里次对角线的和)
// b == arr.length-1-a 这个表达式所是第二天对角线的精髓,所表达的是:当第一次循环时取内层数组的下标值
// 以下是解释它运行的原理:
// 当第一次循环时。外层数组的长度是3 (外层数组的下标为0) 当外层数组的的长度减去1得到的值
//在减去外层数组开始循环的下标值a(也就是0),数学的表达就是(3 -1 - 0)= 2就得到了第一个内层数组的下标值[0,2]
// 当地二次循环时。外层数组的长度仍然是3 (此时外层数组的下标为1) 当外层数组的长度减去1得到的值
//在减去外层数组开始的下标值a(也就是1) 数学的表达就是(3 -1 - 1)= 1 就得到了第二个内层数组的下标值[1,1]
// 当地三次循环时。外层数组的长度仍然是3 (此时外层数组的下标为2)当外层数组的长度减去1得到的值
//在减去外层数组开始的下标值a(也就是2) 数学的表达就是(3 -1 - 2)= 0 就得到了第二个内层数组的下标值[2,0]
//当循环三次时 循环就结束了。此时也取到了数组中的值
}
}
}
alert(“主对角线元素为:” + sum1 + “和” + sum2 + “对角线元素之和为” + (sum2 + sum1));
console.log(sum1);
}

相关文章: