我在尝试解决此问题时遇到了一些麻烦。下面的代码:

function pasc(n){
var result = [[1]];
for (var row = 1; row < n; row++){
    for (var col = 1; col <= row; col++){
        result[row][col] = result[row - 1][col] + result[row - 1][col - 1];
    }
}
return result;
}
pasc(10)
for (var i = 0; i < result.length; i++){
    document.write(result[i]+"<br>");
}

看来问题取决于使用像myArray[1][1] = "foo"这样的表达式将值分配给数组

我对此感到困惑,因为我可以这样做:var myArray = []; myArray[4] = "foo"似乎暗示可以在1维数组中的任意位置创建元素,但不能在2维数组中创建。

感谢您为消除我的误解提供的任何帮助。

最佳答案

可以使用递归来打印Pascal的三角形

以下是递归工作的代码段。

我们有一个递归函数pascalRecursive(n,a),直到打印出行数为止。每行都是二维数组的元素(在这种情况下为“a”)

    var numRows = 10,
        triangle,
        start,
        stop;

    // N is the no. of rows/tiers
    // a is the 2-D array consisting of the row content

    function pascalRecursive(n, a) {

      if (n < 2) return a;

      var prevRow = a[a.length-1];
      var curRow = [1];

      for (var i = 1; i < prevRow.length; i++) {
        curRow[i] = prevRow[i] + prevRow[i-1];
      }
      curRow.push(1);
      a.push(curRow);

      return pascalRecursive(n-1, a); // Call the function recursively
    }


    var triangle = pascalRecursive(numRows, [[1]]);

    for(var i = 0; i < triangle.length; i++)
      console.log(triangle[i]+"\n");

关于javascript - 如何用Java编程Pascal的Triangle-Confusion Re Arrays,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31023844/

10-11 23:06