2017-12-07 11 views
1

ネストされたループを使用して三角形を構築しようとしています。ネストされたループを持つ三角形の構築

var line, triangle; 
 
line = triangle = ""; 
 

 
for (var row = 1; row <= 7; row++) { 
 
    for (var x = 0; x < row; x++) { 
 
    line += "#"; 
 
    } 
 
    triangle += line + "\n"; 
 
} 
 

 
console.log(triangle);

私はそれぞれの行はこのように一つだけ "#" で最後を超えていることが予想さ:
enter image description here

しかし、これは私が得た結果である。
enter image description here

+1

おそらく、空行で始めたいです。 – SLaks

+1

これには2つのループは必要ありません。 2つの変数を保持します.1つは結果用で、もう1つは現在の行用です。各ループの結果に現在の行を追加してください –

+0

@ will.fiset試してみます –

答えて

2

理由あなたのコードは、各反復でlineを更新していて、追加し続けます。ネストされたループを実行する場合は、外部ループに入るたびに可変ラインをリセットする必要があります。

var line, triangle; 
 
line = triangle = ""; 
 

 
for (var row = 1; row <= 7; row++) { 
 
    line ="" 
 
    for (var x = 0; x < row; x++) { 
 
    line += "#"; 
 
    } 
 
    triangle += line + "\n"; 
 
} 
 

 
console.log(triangle);
それとも、あなたが持っているものを維持し、内部ループとあなただけの行に1つの文字を追加するすべての反復をダンプすることができます。

var line, triangle; 
 
line = triangle = ""; 
 

 
for (var row = 1; row <= 7; row++) { 
 
    line += "#"; 
 
    triangle += line + "\n"; 
 
} 
 

 
console.log(triangle);

+0

これははるかにクリーンです。ありがとう –

+0

その2番目のスニペットは特にきれいです。私は時間の複雑さに最適化されているのが好きです – ionizer

2

ヨーそれぞれのネストされた反復の前にあなたの行を空にする必要があります。これがなければ、1つの行があり、毎回新しい項目をそれに連結します。また、変数lineのままにして、triangleを使用することもできます。

var triangle = ''; 
 

 
for (var row = 1; row <= 7; row++) { 
 
    for (var x = 0; x < row; x++) { 
 
    triangle += "#"; 
 
    } 
 
    triangle += "\n"; 
 
} 
 

 
console.log(triangle);

また、以下String#repeat

var triangle = ''; 
 

 
for (var row = 1; row <= 7; row++) { 
 
    triangle += '#'.repeat(row) + '\n'; 
 
} 
 

 
console.log(triangle);

+0

面白い!私はString#repeatを読むでしょう。 –

0

てみコードでこのソリューションを試すことができます。

function generatePyramid() { 
    var totalNumberofRows = 7; 
    var output=""; 
    for (var i = 1; i <= totalNumberofRows; i++) { 
     for (var j = 1; j <= i; j++) { 
      output+= "# "; 
     } 
     print(output); 
     output=""; 
    } 
} 
generatePyramid(); 

仕組み:http://rextester.com/ULY85622

1

EDIT:ちょうど1行を追加して、それを修正 - あなたは、変数を再初期化する必要があり、 "ライン" の各行の後に反復

var line, triangle; 
 
line = triangle = ""; 
 

 
for (var row = 1; row <= 7; row++) { 
 
    line=""; 
 
    for (var x = 0; x < row; x++) { 
 
    line += "#"; 
 
    } 
 
    triangle += line + "\n"; 
 
} 
 

 
console.log(triangle);

+0

私はそれをしましたが、これはより読みやすい方法です。ありがとう –

関連する問題