Я пытаюсь построить треугольник, используя вложенные циклы.
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);
Я ожидал, что каждая строка больше, чем последняя, только одним "#" следующим образом:
Но это результат, который я получил:
Причина, по которой ваш код делает это, заключается в том, что вы обновляете 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);
Или вы можете сохранить то, что у вас есть, и сбросить внутренний цикл, и на каждой итерации вы просто добавите один символ в строку.
var line, triangle;
line = triangle = "";
for (var row = 1; row <= 7; row++) {
line += "#";
triangle += line + "\n";
}
console.log(triangle);
Перед каждой вложенной итерацией необходимо очистить строку. Без этого у вас есть одна строка и каждый раз объединяет в нее новые элементы. Также вы можете оставить переменную 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);
EDIT: Исправлено, просто добавив одну строку - вам нужно повторно инициализировать переменную "строка" после каждой итерации строк
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);
Попробуйте код ниже:
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