你的位置:首页 > Java教程

[Java教程]JavaScript中有关多维数组的问题


偶然在别人的空间里看见了一个杨辉三角,也想试试。

杨辉三角长得这样:

1

1  1

1  2  1

1  3  3  1

1  4  6  4  1

1  5 10 10 5 1

于是我用js写了个小程序:

  var a=[[]];
  var n = 7;
  for (var i = 0; i < n; i++) {
    for (var j = 0; j <= i; j++) {
      if ((i - 1 >= 0) && (j - 1 >= 0) && (i != j)) {
        a[i][j] = a[i - 1][j - 1] + a[i - 1][j];
      } else {
        a[i][j] = 1;
      }
    }
  }
    alert(a);

这样运行会报错!

可是我找不到问题出在哪里?

然后请教我师傅,他跟我的思路不一样:如果输出的形状如上面所示,他会把每一行当做一个数组,然后把所有的行都push到一个数组里面。

我的想法:就一个数组a,i代表行,j代表列,a[i][j]表示i行j列这个位置的值。

但是事实证明我错了,虽然我定义了a=[[]]表示二维数组,但是不识别,默认只当做是一维的。

修改后代码如下:

var a = [];
var n = 6;
for (var i = 0; i < n; i++) {
  var b = [];
  for (var j = 0; j <= i; j++) {
    if ((i - 1 >= 0) && (j - 1 >= 0) && (i != j)) {
      b[j] = a[i - 1][j - 1] + a[i - 1][j];
    } else {
      b[j] = 1;
    }
  }
  a.push(b);
}
alert(a);

这样总算可以了。