Не получается вывести по заданному пользователем размеру треугольник из звёздочек

Есть задача вывести по заданному пользователем размеру треугольник из звёздочек. Например, при размере 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 шт):

Автор решения: HaZcker
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)
→ Ссылка
Автор решения: Laukhin Andrey

Проблема с вашим кодом в том, что он не решает эту задачу и его нужно переписать заново. Вряд ли можно сделать короче:

let size = 5;

while(size) console.log('*'.repeat(size--));

→ Ссылка