程式基礎 —— 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

[Release Notes] 20210317_v1 - Support Insert img path and save button in post editor

[Release Notes] 20210317_v1 - Support Insert img path and save button in post editor

This is shell script for example code

This is shell script for example code

Jest "Cannot find module from xxx" issue

Jest "Cannot find module from xxx" issue


Comments