程式基礎 —— Javascript 動手做 Part2


Posted by Lindsay0214 on 2021-07-21

LV2

寫出一個 function stars,接收一個參數 n,並且按照規律印出相對應的圖案。

stars(1) 預期輸出:*
stars(3) 預期輸出:******
stars(7) 預期輸出:****************************

function stars(n){
    let msg = ''
    for(i=0; i<n; i++){
        for(j=0;j<=i;j++){
            msg += '*'
        }
    }
    console.log(msg)
}

寫出一個 function makeStars,接收一個參數 n,並且根據規律「回傳」字串

makeStars(1) 正確回傳值:*
makeStars(2) 正確回傳值:*\n**
makeStars(5) 正確回傳值:*\n**\n***\n****\n*****

function makeStars(n){
    let msg = ''
    for(let i=0;i<n; i++){
        for(let j=0; j<=i; j++){
        msg += '*'
        }
        msg += '\n'
    }
    return msg
}

寫出一個函式 stars2,接收一個參數 n,並依照規律印出圖形。

stars2(1) 預期輸出:*
stars2(3) 預期輸出:

*

**

***

**

*

stars2(5) 預期輸出:

*

**

***

****

*****

****

***

**

*
// 參考
function star(i){
    var result = ''
    for(let j=1; j<=i; j++){
        result += '*'
    }
    return result
}

function stars(val){
    for(let i=1; i <= val ; i++){
        console.log(star(i))
    }

    for(let i = val - 1; i >= 1; i--){
        console.log(star(i))
    }

}

stars(3)

乘法表

寫一個函式 table,接收一個數字 n,印出 n1 ~ n9 的結果。

table(1) 預期輸出:

1*1 = 1
1*2 = 2
1*3 = 3
1*4 = 4
1*5 = 5
1*6 = 6
1*7 = 7
1*8 = 8
1*9 = 9

table(7) 預期輸出:

7*1 = 1
7*2 = 14
7*3 = 21
7*4 = 28
7*5 = 35
7*6 = 42
7*7 = 49
7*8 = 56
7*9 = 63
function table(n){
    for(let i=0; i<=9; i++){
        console.log(`${n}*${i} = ${n*i}`)
    }
}

九九乘法表

寫出一個 function table9to9,並列出 1*1 ~ 9*9

table9to9() 預期輸出:

1*1 = 1

1*2 = 2

1*3 = 3

.....

5*1 = 5

5*2 = 10

5*3 = 15

....

9*7 = 63

9*8 = 72

9*9 = 81
function table9to9(){
    for(let j=1; j<=9; j++){
        for(let i=1; i<=9; i++){
        console.log(`${j}*${i} = ${j*i}`)
        }
    }
}
table9to9()

費式數列

費式數列的定義為:第 n 個數等於前兩個數的總和,因此這個數列會長的像這樣:1 1 2 3 5 8 13 21 ....

用比較數學一點的講法,就是:
fib(0) = 0
fib(1) = 1
for n >=2, fib(n) = fib(n-1) + fib(n-2)

現在,請你寫出一個 fib 的函式,回傳位在第 n 個位置的數字

fib(1) 預期回傳值:1
fib(2) 預期回傳值:1
fib(8) 預期回傳值:21

function fib(n){
    if(n===0) return 0
    if(n===1) return 1
    return fib(n-2)+fib(n-1)
}
console.log(fib(8))

字串反轉

寫出一個函式 reverse,接收一個字串,並且回傳反轉過後的字串。(禁止使用內建函式 reverse)

reverse("abcd") 預期回傳值:dcba
reverse("12345aa") 預期回傳值:aa54321

function reverse(str){
    let msg = ''
    for(let i=str.length-1; i>=0; i--){
        msg += str[i]
    }
    console.log(msg)
}
reverse("abcd")
reverse("12345aa")

大小寫互換

寫一個函式 swap,接收一個字串,並且回傳大小寫互換後的字串。

swap("Peter") 預期回傳值:pETER
swap("AbCdE") 預期回傳值:aBcDe

// 參考
function swap(str){
    let result = '';
    for(let i=0;i<=str.length;i++){
        if(str[i] <= 'a' && str[i] <= 'z'){
            result += str[i].toLowerCase();
        }

        if(str[i] >= 'A' && str[i] >= 'Z'){
            result += str[i].toUpperCase();
        }
    }
    console.log(result)

}

swap("Peter")
swap("AbCdE")

找出最小值

寫出一個函式 findMin,接收一個陣列並回傳陣列中的最小值。(禁止使用內建函式 sort)

findMin([1, 2, 5, 6, 99, 4, 5]) 預期回傳值:1
findMin([1, 6, 0, 33, 44, 88, -10]) 預期回傳值:-10

// 參考
function findMin(arr){
    let minNumber = arr[0];
    for(let i = 1; i < arr.length;i++){
        if(minNumber > arr[i]){
            minNumber = arr[i];
        }
    }
    console.log(minNumber)
}
findMin([1, 2, 5, 6, 99, 4, 5])
findMin([1, 6, 0, 33, 44, 88, -10])

找出第 n 小的值

寫一個 function findNthMin,接收一個陣列以及一個數字 n,找出第 n 小的數字。(禁止使用內建函式 sort)

提示:假設我要找出第 2 小的值,我只要先找出最小的值然後再把它刪掉,再重新找一次最小的值,就會是第 2 小的值了。

findNthMin([1, 2, 3, 4, 5], 1) 預期回傳值:1
findNthMin([1, 3, 5, 7, 9], 3) 預期回傳值:5
findNthMin([1, 1, 1, 1, 1], 2) 預期回傳值:1

function findNthMin(arr, n){
}

#Lindsay's note #程式導師計劃 MR05 #javascrpit







Related Posts

什麼是 scope?

什麼是 scope?

【Day06】實戰開始 - 區塊分割2

【Day06】實戰開始 - 區塊分割2

NumPy 基礎 | 陣列切片 (Array Slice)

NumPy 基礎 | 陣列切片 (Array Slice)


Comments