Не получается вывести по заданному пользователем размеру треугольник из звёздочек
Есть задача вывести по заданному пользователем размеру треугольник из звёздочек. Например, при размере 3, на выходе должно быть вот это:
***
**
*
Моё решение:
let i, j;
let stars = "";
let size = +prompt("Please, enter a size of triangle");
starsCount: for (i = 0; i < size; i++) {
stars += "*"
if (size - i == 1){
for (j = 0; j < size; j++) {
console.log(stars);
size--;
if (j == 0 && size > 0){
stars = "";
continue starsCount;
}
}
}
}
Если убрать отсюда вот эту часть кода:
size--;
if (j == 0 && size > 0){
stars = "";
continue starsCount;
}
то программа просто выдаст 3 одинковых строки.
Моя задумка заключается в том, что бы при первом шаге вложенного цикла, который отвечает за печать, уменьшать size, обнулять строку и при условии, что size > 0, код начинает работать с внешним циклом уже с меньшим сайзом и выводит уже строку на одну звёздочку меньшу. Таким образом, код должен работать до тех пор, пока не будет выведена одна *. Но так не происходит с моим кодом: почему-то выводится только одна строка *** и всё.
Мне показали другое решение этого задания, но очень хочу разобраться, почему не работает мой код.
Ответы (2 шт):
function printStars(count) {
for (let i=count; i>0; i--) {
let line = ''
for (let j=i; j>0; j--) {
line += '*'
}
console.log(line)
}
}
printStars(5)
Проблема с вашим кодом в том, что он не решает эту задачу и его нужно переписать заново. Вряд ли можно сделать короче:
let size = 5;
while(size) console.log('*'.repeat(size--));