Дерево упражнений с циклом в JavaScript - PullRequest
1 голос
/ 04 ноября 2019

Я хочу создать дерево с *. Я буду давать число каждый раз, чтобы указать высоту дерева. Это должно выглядеть примерно так, если я задаю число 4 в качестве высоты, например:

    *
   ***
  *****
 *******

Я бы хотел, чтобы дерево отображалось с использованием console.log

Я сделал это:

var size = 4;

document.write(
  "<center>" + Array.apply(0, new Array(size)).map(function(_, i) {
    return new Array((i + 1) * 2).join(" * ");
  }).join("<br>") + "</center>"
);

, но это не работает, если я использую console.log

Ответы [ 3 ]

1 голос
/ 04 ноября 2019

Вам просто нужно сосчитать места слева на этаже. Самый глубокий начинается с j=0. Этаж выше на j=1. И пр.

Учитывая высоту h,

  • этаж h-1-> j = 0
  • этаж h-2-> j = 1
  • этаж 0-> j = h-1

Обратите внимание, что если вы начнете с этажа 0, вы получите j=h-1 и удалите пробел на каждом последующем этаже.

Таким образом, вы можете написать тривиально

    const h = 4;
    console.log(Array(h).fill(0).map((_,i)=>{
        return ' '.repeat(h-1-i)+'*'.repeat(i*2+1)
    }).join('\n'))
0 голосов
/ 04 ноября 2019

Я создал один такой.

function drawTree(height) {
        for ( let i = 0; i < height ; i++ ) {
            let star = '*';
            let space = ' ';

            for ( let j = 1; j <= i; j++ ) {
                star = star + '**';            
            }

            let gap = space.repeat(height-i-1);
            star = gap + star;
            console.log(star);
        }
    }

    let number = prompt('Give number for tree height');

    drawTree(number);
0 голосов
/ 04 ноября 2019

Чтобы уточнить мой комментарий. Вы не сможете показывать html в консоли. Так что вам нужно забыть о тегах. Когда вы печатаете дерево, вы должны знать, насколько оно велико (высота). Таким образом, вы знаете, сколько пробелов будет предшествовать вашей звезде.

Количество пробелов определяется общей высотой - текущим «уровнем» сверху вниз - 1

и количеством звездочекдается в 2 раза от текущего «уровня» плюс 1

let spaces = " ".repeat(height-i-1);
let stars = "*".repeat(i*2+1);

Так что просто используйте цикл, чтобы пройти все уровни дерева сверху вниз и объединить пробелы и звезды

Вот пример того, как это работает (пример также выводит текстовую область в целях предварительного просмотра, а также в консоли)

https://codepen.io/relief_melone/pen/zYYRZmj

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...