Я работаю над викториной для онлайн-курса.
Для этого теста вы создадите функцию buildTriangle (), которая будет принимать входные данные (треугольник с самой широкой шириной) и будет возвращать строковое представление треугольника. Смотрите пример выходных данных ниже.
buildTriangle(10);
returns
*
* *
* * *
* * * *
* * * * *
* * * * * *
* * * * * * *
* * * * * * * *
* * * * * * * * *
* * * * * * * * * *
Я решил это с помощью этой функции:
function buildTriangle(length) {
var line = "";
var triangle ="";
for (h = 1; h <= length; h++) {
makeLine(length);
function makeLine(length) {line += "* ";}
triangle += line + "\n";
}
return triangle
}
buildTriangle(10));
Который успешно возвращает:
*
* *
* * *
* * * *
* * * * *
* * * * * *
* * * * * * *
* * * * * * * *
* * * * * * * * *
* * * * * * * * * *
Однако, прежде чем перейти к этому решению, я попробовал это:
function buildTriangle(length) {
var line = "";
var triangle ="";
for (h = 1; h <= length; h++) {
makeLine(length);
function makeLine(length) {
for (i = 1; i <= length; i++) {
line += "* ";
}
}
triangle += line + "\n"
}
return triangle
}
console.log(buildTriangle(10));
Который вернул это:
* * * * * * * * * *
* * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
Почему эта вложенная функция makeLine
не проходит цикл нормально (т.е. начиная с 1), а вместо этого выдает 10 каждый раз? Есть ли способ заставить цикл работать нормально (1, 2, 3, 4, 5 ...)? Почему это вложение не работает?