2

この問題の試みに少し問題があります。以下のコード:

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次元では作成できないことを示唆しているようです.

私の誤解を解消するための助けに感謝します。

4

10 に答える 10

1

JavaScript には 2 次元配列がありません。それが持っているのは、たまたま他の配列を含む配列です。したがって、はい、配列内の任意の位置に値を割り当てることができ、配列は魔法のように十分に大きくなり、「未定義」でギャップを埋めます...しかし、値を配列内の任意の位置に割り当てることはできませんまだ明示的に作成していないサブ配列。サブ配列の位置に値を割り当てる前に、最初の配列の位置にサブ配列を割り当てる必要があります。

交換する

for (var row = 1; row < n; row++){
    for (var col = 1; col <= row; col++){

for (var row = 1; row < n; row++){
    result[row] = [];
    for (var col = 1; col <= row; col++){

するべきです。とにかく、すべてのインデックス作成ロジックが正しいと仮定します。result[row][col] = result[row - 1][col] + result[row - 1][col - 1];最初の配列には単一の値しか含まれていないため、定義されていない少なくとも1つのセルにアクセスしているため、そこにも問題があります。

于 2015-06-24T10:22:05.637 に答える
0

ここにn = 3のパターンがあります

      #

     ##

    ###

これを印刷するためのjsコードは次のとおりです。

function staircase(n) {
    for(var i=0 ; i<n ; i++) {
        for(var j=n-1 ; j>i ; j--)
            process.stdout.write(" ");

        for(var k=0 ; k<=i; k++) {
            process.stdout.write("#");
        }
        process.stdout.write("\n");
    }
}
于 2020-05-02T16:10:56.400 に答える
0

任意の 2 次元配列を作成してそこに格納し、正しい Pascal を返すことができます。JavaScript には、多次元配列を作成するための特別な構文はありません。一般的な回避策は、ネストされたループで配列の配列を作成することです。

ソース

これが私のバージョンのソリューションです

function pascal(input) {
  var result = [[1], [1,1]];
  if (input < 0) {
    return [];
  }
  if (input === 0) {
      return result[0];
  }

  for(var j = result.length-1; j < input; j++) {
    var newArray = [];
    var firstItem = result[j][0]; 
    var lastItem = result[j][result[j].length -1]; 
    newArray.push(firstItem);

    for (var i =1; i <= j; i++) {      
      console.log(result[j][i-1], result[j][i]);
      newArray.push(sum(result[j][i-1], result[j][i]));
    }

    newArray.push(lastItem);

    result.push(newArray);
  }
  return result[input];
 }


 function sum(one, two) {
    return one + two;
 }
于 2018-03-23T01:42:44.120 に答える