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){
}