0%

JS 筆記 - 簡化法搭配函式填空法

star

簡化法

開發的過程需求總是很多,而且很複雜,而面對這麼多問題一時也不知道從何下手,而使用簡化法可以把問題縮到最小,解決掉小問題就可以逐漸解決大問題,因為大問題是由許多小問題構成。

舉生活的例子:

小美告訴小明說:「我電腦壞了。」
小明第一時間只接收到電腦壞了,可是電腦的組成很多部分,
是螢幕壞了,還是滑鼠壞了,還是主機壞了?
這時候已經開始解析問題的複雜度,最後分析是主機壞了,
可是主機又分成主機板、顯示卡、記憶體、電源供應器、硬碟…等等。
最後的最後發現是電源供應器壞了,所以只要換掉電源供應器,主機就修好了。

寫程式也是一樣,馬上來看一題。

印出星星

題目是這樣

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
n = 1
*

n = 2
*
**

n = 3
*
**
* * *
.
.
.
n = 10
*
**
* * *
****
*****
******
*******
********
*********
**********

先解一個

看到題目我第一時間反應是我不會解到第 10 個,那我解一個試看看,如果印得出一個,應該就可以印出 10 個。

看規則應該是要使用迴圈,然後印出來,所以想到這樣。

1
2
3
for (let i = 1; i <= 10; i++) {
console.log("*");
}

沒錯,會跑 10 次的一顆星星。

前一篇有說如果還不知道怎麼做,就先用函式填空法

所以先填起來,如下:

1
2
3
4
5
6
7
8

for (let i = 1; i <= 10; i++) {
printStar(i);
}

function printStar(n) {
//todo
}

印出 10 個星星

  • 要依序找出 10 個星星,也是要用迴圈的方法來做,並且起始數字為 1,因為 n=1 要印出一個。
  • 讓其跑回圈印出星星,並且加總讓每次數字跟星星的數量相同。
  • 印出星星。
1
2
3
4
5
6
7
function printStar(n) {
let star = "";
for (let i = 1; i <= n; i++) {
star += "*";
}
console.log(star);
}

Demo: https://codepen.io/hnzxewqw/pen/ZEBzXmm?editors=1112

參考資料

  1. 先別急著寫 leetcode