---
# System prepended metadata

title: javascript 程式題
tags: [JS]

---

# javascript 程式題
###### tags: `JS`
___
## 真相(答案)只有一個，但解法百百種，想像力就是超能力。
用 google，找答案，是種善用工具的能力。
```
//題目:
//寫一個 function，可以輸出以下陣列。
arr = [0,1,1,2,3,....,n]
```
看到題目，先去分析題目，要你做甚麼。
我會想到的問題是，function，是否有輸入?可以問出題者，或是自由發揮。 
可以知道，會宣告一個陣列，`arr = []`
可以知道，`arr[0]=0`
可以知道，`arr[1]=1`
把這兩件事，當特別事件做處理。
會用到，for，if，function，retuen，let
```javascript=
// arr = [0,1,1,2,3,....,n]

// 可以自己假設arr = [0,1,1,2,3]，要如何輸出，跟有5個數。

// 解法1

function sequence1(x){
    let arr = [0,1];
    for(let i = 2; i<x; i++){
        arr[i] = arr[i-1] + arr[i-2]
    }
    return arr;
}

console.log(sequence1(5))
```
```javascript=
// 面試官。又要求 i 要從 0，開始。
// 解法2，i 要從 0，開始。

function sequence2(x){
    let arr = [];
    for(let i = 0; i<x; i++){
        if(i == 0) {
            arr[i] = 0
        }
        if(i == 1) {
            arr[i] = 1
        }
        if(i > 1){
            arr[i] = arr[i-1] + arr[i-2]
        }   
    }
    return arr;
}

console.log(sequence2(5))
                      
// 解法2，更簡化1，if {} ，裡只有1行程式，可以去掉{}

function sequence2(x){
    let arr = [];
    for(let i = 0; i<x; i++){
        if(i == 0) arr[i] = 0
        if(i == 1) arr[i] = 1
        if(i > 1) arr[i] = arr[i-1] + arr[i-2]
    }
    return arr;
}

console.log(sequence2(5))

// 解法2，更簡化2，可以用 三元判斷式
function sequence2(x){
    let arr = [];
    for(let i = 0; i<x; i++){
        arr[i]=(i == 0) ? 0 : ((i == 1) ? 1 : arr[i-1] + arr[i-2])
    }
    return arr;
}

console.log(sequence2(5))
```
```javascript=
// 解法3，
// 方法2，將問題，在提出成，function。

// 第一步: 先大約寫程式的架構，將問題提出成，function。在來完成，提出的function的程式。
//依照題目，先寫一個 function，宣告空陣列，輸出arr。
//利用 for，看要重複做幾次，放入值到 arr 中。
//for 裡，很簡單，就是arr.push()
//將問題，在包裝成一個，fib(i)，i 是輸入，0,1,2...n，fib()會輸出，我們要的值。

function arrFib(n){
    let arr = [];
    for(let i = 0; i < n; i++) {
        arr.push(fib(i))
    }
    return arr
}

// 第二步: 完成 fib(i)。
// 可以知道， i == 0，return 0。i == 1，return 1。
// 故 if (n < 2) return n;
// 其於，為 return fib(n - 1) + fib(n - 2);。這寫法在程式中叫做遞迴，只 function 會自己呼叫自己。

function fib(n) {
    if (n < 2) return n;
    return fib(n - 1) + fib(n - 2);
}

function arrFib(n){
    let arr = [];
    for(let i = 0; i < n; i++) {
        arr.push(fib(i))
    }
    return arr
}

console.log(arrFib(8));
```

```javascript=
// 費氏數列
// arr = [0,1,1,2,3,....,n]
// 方法1
var arr = [];
for(var i = 0; i <= 3; i++) {
    if( i == 0) arr.push(0);
    if( i == 1) arr.push(1);
    if( i > 1) arr.push(arr[i-1] + arr[i-2]);
}
console.log(arr)
```
___
## Github 把做好的網頁秀在網路上

[Github Pages / 把做好的網頁秀在網路上【免費！！】](https://www.youtube.com/watch?v=lzEZI9wzPYU)
[拯救資工系學生的基本素養—Github Page 使用教學](https://www.youtube.com/watch?v=NovKS8kWYAg)