編寫流程:虛擬碼(Pseudocode)費波那契(Fibonacci )函式
在過去有記錄編碼是用『 流程圖 - 演算法 』:
適合用簡單的運算式.
當現在越是複雜的演算出現時, 就取而代之的出現了
虛擬碼 Pseudocode
「 主要目的還是為了邏輯的表達與溝通. 」
「 虛擬碼只是幫助我們思考解題的一個步驟 」
它是一種思考的過程與表達方法
基本上也沒有規定一定要怎麼寫.
虛擬碼的撰寫重點
參考註解方式 「 虛擬碼 (Pseudocode):
- 以英文撰寫
- 一句話對應到一個程式指令
- 關鍵字大寫(比如 IF, ELSE, FOR 等)
- 使用縮排,表達前後兩句陳述的推進關係
5. 沒有硬性規定一定要怎麼寫
Mozilia.org 常看到很多[ 虛擬碼 ]註解, 為什麼是中文呢?
[ — 基本上沒有規定一定要怎麼寫 — ]
本人初學時常常用英文註解虛擬碼, 往回頭看不知道在表達什麼
如果是團隊朋友看到肯定會非常痛苦. 你細共蝦???
每個人英文程度不一樣, 解讀英文方式會不一樣.
中文比較可以避免這問題
小小建議 : 如果是開發團隊建議有個「 統一規格 」虛擬碼
建議 2 : 一句話對應到一個程式指令! 『統一規格』
建議3 : 使用 駱駝碼編譯 程序 ! 強推!
examInterview , examFibonacci , barryInterview , barryInterviewExam ,,,,somthing likt this … first Word is lowerCase.
EXAMPLE : Interview Exam
寫出函式:費波那契數列
0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233⋯⋯
拆解問題 :
陣列[0] [1] 是屬於一組, 相加等於陣列[ 2]
0+1=1 以此類推 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233⋯⋯
蒐集資料和方法:
- 參考網站或參考書
- 函數建立 & 定義變數 (陣列)
- 陣列物件使用 &加入迴圈公式
- 使用虛擬碼 : 因為複雜度關係,
費波那契(Fibonacci )函式
不適合用“ 演算法 — 流程圖“
建立函數 & 程式流程
1. 建立函數:
function fib ( number ) { } or ( number ) =>{ } 匿名函數
本篇用function name ( X)
1–1. 定義變數
const arr = [ 0 , 1 ] ;
arr = value 0 , value 1 ….//怕讀者看不懂,所以這樣舉例
/// 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233 , 取0 和 1 作為初始陣列
1–2. 陣列物件 push
將結果透過push 放置到陣列尾端 . 慢慢遞增 .
1–3. 使用迴圈 for ,,, //避免無限迴圈.
將 陣列 [0 ] + [1] 相加後, 等於 [ 3 ] 透過 Push 物件工具, 增加一次陣列
第一次回圈 const arr = [ 0 , 1 , 2 ] , Push 第二次回圈 const arr = [ 0 ,1 ,2 ,3 ]
for ( index = 2 , index ≤ number ; index ++ )
開始頁位置 : 定義變數 let index =2
將 index 指定 arr = [ 0 ,1 ]
回圈遞增:相加 index ++
從index 2 +1 = index 3 +1 =index4 +1 >>>以此類推
迴圈停止:結束位置 index ≤ number
從陣列[ 2 ]開始至 number 為止 , 讓index ++ 遞增停止
加入迴圈, 實現遞增啟動
for ( i =2 ; index < = number ; i ++ )
1–4 . 用簡單數學公式- 定義 a 和 b 位置, 並將公式加入迴圈
//leta = 2–1 = 1 arr[1]
//letb = 2–2 = 0 arr[0]
let a = arr[i -1]; 陣列[1]
let b = arr[i - 2]; 陣列[0]
加入迴圈
for ( i =2 ; index < = number ; i ++ ) { // let a let b 每一次迴圈遞增一次位置. let a = arr[i -1]
let b = arr[i -2]
1–5. 每次取得的新陣列Push 入尾端的陣列:
arr [ 0 , 1 ] 迴圈後 arr [ 0 ,1 ,2 ] , 迴圈後 arr [0 ,1 ,2 ,3 ] 直到結束為止…
直到 index = number 迴圈結束.
arr.push (a+b )
for ( i =2 ; index < = number ; i ++ ) {// let a let b 每一次迴圈遞增一次位置.let a = arr[i -1]
let b = arr[i -2]
arr.push (a+b )
}
將 a 陣列位置的value 加上 b 陣列位置的value
2.虛擬碼(Pseudocode):
英文撰寫 :