簡體   English   中英

javascript 中的循環樹練習

[英]Tree exercise with a loop in javascript

我想用 *. 我每次都會給出一個數字以指定樹的高度。 如果我給數字 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 它不起作用

您只需要計算每層左側的空間。 最深的從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'))

澄清我的評論。 您將無法在控制台中顯示 html。 所以你需要忘記標簽。 當您打印樹時,您應該知道它將有多大(高度)。 所以你知道你的星星之前有多少個空格。

空格數由總高度給出 - 當前從上到下的“級別” - 1

並且星數是當前“等級”的2倍加1

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

所以只需使用一個循環到 go 從上到下遍歷樹的所有級別並連接空格和星號

這是一個關於它是如何工作的示例(示例還打印到文本區域以進行預覽以及在控制台中)

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

我創造了一個這樣的。

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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM