Re: [問題] 請問這2種運算式的優缺點在哪
※ 引述《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
推
11/22 00:03, , 1F
11/22 00:03, 1F
推
11/22 00:07, , 2F
11/22 00:07, 2F
推
11/22 00:08, , 3F
11/22 00:08, 3F
推
11/22 00:16, , 4F
11/22 00:16, 4F
推
11/22 00:45, , 5F
11/22 00:45, 5F
推
11/22 01:00, , 6F
11/22 01:00, 6F
推
11/22 01:05, , 7F
11/22 01:05, 7F
簡單的演算法如選擇排序, 都是動態改變判斷的結果 > <"
→
11/22 01:08, , 8F
11/22 01:08, 8F
→
11/22 01:09, , 9F
11/22 01:09, 9F
※ 編輯: loveme00835 來自: 140.121.197.115 (11/22 01:25)
推
11/22 10:19, , 10F
11/22 10:19, 10F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):