# 資料結構 ## 流程圖 ### 基本符號 :::info * 起止符號 : 頭尾各一個 (橢圓框) * 流程符號 : 描述流程 (箭頭) * 程序 : 計算 (長方形) * 決策符號 : 邏輯判斷 (菱形) * 同頁參考 : 連接流程圖,不做功能(小圓圈) * 以定義流程 : 函數或程序 (長方形 兩側有直線) * 註解 : 註解 (長方形以虛線連接) ::: ### 其他符號 :::info * 宣告符號 : 宣告符號 (長方形 左上十字線) * 人工輸入 : 輸入變數 (側倒梯形 上面那邊是右上左下的邊) * 顯示符號 : 螢幕顯示 (左尖右圓) ::: ### 主要流程架構 :::info * 循序架構 : 依照既有的先後次序逐步進行 * 選擇架構 : 1. 根據決策結果擇一進行 2. 可擴充成多重選擇的架構 * 重複架構 : 根據決策結果決定是否重複進行 ::: ### 流程圖須知 :::info * 清楚且完整的表達 * 規範 : 1. 線和圖必須整齊 2. 若分成多個模組繪圖,命名得清楚表達其用途 3. 以菱形表示選擇結構,至少兩條分支,分支都得加註對應值 4. 方塊間以箭頭表示先後,開始和結束都各出現一次 5. 若非結束方塊都得有下一步,避免此路不通或無窮迴圈 6. 避免一個方塊有多個步驟,具先後次序且各自獨立 ::: ## 遞迴 ### 介紹 :::info 遞迴(Recursion)的概念是將一個大的問題, 分割成許多小問題去解決。而從程式設計角度來看, 函式不單只能被其他函式呼叫,也能被它自己呼叫, 也就是在一個函式當中呼叫它自己,即為遞回函式(Recursive Function)。 至少要定義2種條件: 什麼情況下作遞迴(呼叫自己) 什麼情況下作遞迴結束 ::: ### 缺點: :::danger (1)需要花費較多的時間。 (2)利用暫存堆疊(Stack)的觀念,需要額外的儲存空間。 ::: ### 遞迴實例:判斷是否為整數 :::warning ``` bool Isint(string input,int i){ bool result ; if (i+1 == input.length()){ if(!(i == 0 and input[i] =='-')and (input[i] >'9' or input[i]<'0')){ return false; } return true; } else { if(!(i == 0 and input[i] =='-')and (input[i] >'9' or input[i]<'0')){ return false; } else{ result = Isint(input,i+1); } } return result; } //Isint() ``` :::
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up