|
|
步驟 1 |
初步的想法: 找一個標準的範例 135
==> 一百三十五
好像可以用下面流程圖來實現 (完整功能的程式是一步一步慢慢修正設計得到的, 一開始有一些錯誤不見得很糟糕)
問題:
分析:
|
步驟 2 |
請特別注意因為我們用圖形來表示, 我們也特別以規律的方法來畫, 例如 N 小的畫在左邊, N 大的畫在右邊, 又特別用紅字標示每一塊所處理的 N 數值, 這樣可以很方便地檢查是不是考慮時有漏掉任何狀況, 這是為什麼像這樣比較複雜的判斷邏輯不直接寫程式碼的原因
問題: 許多程式碼不斷地重複 |
步驟 3 |
使用函數去除重複的程式碼 |
步驟 4 |
進一步簡化流程的方法: 上面這個流程圖還是蠻複雜的, 雖然可以確定已經考慮所有的狀況了, 可是轉換成程式還是挺複雜的, 如果不用函數的話, 會出現三層的 if 敘述 if (...) { if (...) { if (...) { ... } else { ... } } else { .... } }
讓我們再分析一下, 看能不能有更直覺的方式來設計: 其實關鍵問題只在於三種狀況
如此就可以再修改步驟一裡的流程圖變成下圖
概念上是不是稍微簡化一些呢? 換成程式以後會變成連續的 5 個 if 敘述, 其中第二個會是兩層的巢狀 if 敘述 請記得把列印 H, T, O 的三個部份用 switch 或是 if 寫在一個獨立函數裡 |