精華區beta C_and_CPP 關於我們 聯絡資訊
※ 引述《wwf1310 (睡覺)...(掛)》之銘言: : Q: : 1是先做迴圈再判斷 : 2是先做判斷再迴圈 : 請問這2種在什麼情況下會有出現它的優缺點呢? : A: : (我想不太到它的優缺點...納悶) : 有人可以解惑一下嗎,謝謝 ! : 1. for(i=0; i<n; i++) : { if(condition) : DOsomething(); : else : DOsomething(); : } : 2. if(condition) : { for(i=0; i<n; i++) : DOsomething(); : } : else : { : for(i=0; i<n; i++) : DOsomething(); : } 兩種方法不只是做法不一樣, 所代表的涵意其實也不一樣, 舉個例子來說: 假如你是學生, 每天只有兩件事情可以做: 1.打魔獸 2.寫作業 你獲得小道消息指出, 某堂課在「第 n天之後要交作業」, 助教每天都會上課程網站更新公告, 但是目前還沒任何相關 訊息, 你決定再持續觀察看看... 有以下兩種策略可以使用: 1. for( 從今天起到 n - 1 天 ) { if( 有公告說要交作業 ) 寫作業; else 打魔獸; } 2. if( 今天有公告說要交作業 ) { for( 從今天起到 n - 1 天 ) 寫作業; } else { for( 從今天起到 n - 1 天 ) 打魔獸; } 很明顯地第 1種策略是比較保險的作法, 只有當你 if 檢查 的條件在迴圈執行期間都不會改變時 (也就是要嘛助教今天 就公告要交作業, 不然就是都沒公告) , 最後的結果才會相 同, 否則稍有閃失你可能就哭哭了. 寫單執行緒的程式時, 除非迴圈有執行到會改變條件的程式 碼, 否則兩個策略結果都會相同, 然後你才可以計較誰快誰 慢. 但是; 如果會改變條件的不止一個執行緒, 兩者間就會 有很大的不同了. 寫程式首要的目標就是正確性, 你需要依 照情境來選擇最適合的作法. 想要跑得快 → 程式碼不直覺 → 程式碼不好改 → 程式碼沒人要 → 程式碼作廢 -- ◢████ ◢█ ◢██◣ ◢█ ◢███ ◢█ T-ara版怎麼去 ████◢█████s ~> T-ara ███ █ ◢█歡迎您的光臨 ███████████恩靜智妍孝敏 ███ ██ 素妍居麗寶藍 ████◥██◤ █████ψmakigoto123 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.121.197.115
james732:推薦這篇文章! 11/22 00:03
※ 編輯: loveme00835 來自: 140.121.197.115 (11/22 00:04)
tropical72:push~~ 11/22 00:07
nowar100:哈哈 這比喻真是太妙了 11/22 00:08
herman602:XDDD 11/22 00:16
cobrasgo:m起來XD 11/22 00:45