印出聖誕樹

來自 LIOJ 上的題目,還是有不太熟悉,所以在練習一次。

解題思維

這一題可以先拆成兩個部分:

  1. 星星的總行數
  2. 木棒的總行數

星星總共會有 n 行,所以迴圈會寫成:

(i 從 1 開始是因為函式的參數需要,如果從 0 開始的話會不太方便)

1
2
3
for(let i=1; i<=n; i++) {
console.log('*', i)
}

木棒總共會有 n-1 行,所以迴圈會寫成:

(一樣需要傳遞引數,所以 i 從 1 開始)

1
2
3
for(let i=1; i<=n-1; i++) {
console.log('|', i)
}

這樣就完成了基本架構:

solve(['2'])

1
2
3
*
*
|

solve(['3'])

1
2
3
4
*
*
*
|

接著再來處理「每行的星星」跟「每行的木棒」就大功告成了。

  • 每行的星星數量規律為 2i-1,星星的空格為 n-i
  • 每行的木棒數量固定,木棒的空格規律為 n-1

所以把前面寫好的部分稍微改寫一下:

1
2
3
4
5
6
7
// 星星
for(let i=1; i<=n; i++) {
console.log(repeat(' ', n-i) + repeat('*', 2*i-1))
}
for(let i=1; i<=n-1; i++) {
console.log(repeat(' ', n-1) + '|')
}

這樣就大功告成!

solve(['3'])

1
2
3
4
5
  *
***
*****
|
|
水仙花數 mentor-program-day15
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×