Ch.07 題目練習
副程式
題目
副程式基本沒啥特別的練習題,不過如果想練習寫副程式,可以把程式中時常重複出現的部分,試著提出來另外寫成一組副程式。
編者個人認為副程式這塊除了練習,更重要的是「判斷哪幾段程式可以提出來另外寫」,適時的使用副程式,可以很有效的簡化程式碼。
- 最大值
- 絕對值
- 最大公因數
- 交換變數
- Toj 170 / 各種星星樹
- Kattis DRM Messages
題解
-
最大值
回傳兩者中比較大的那個,如果 a > b
就回傳 a
,反之回傳 b
-
絕對值
n
小於 0 時回傳 -n
,否則直接回傳 n
-
最大公因數
以輾轉相除法的方式去實作,每次讓 a
與 b
交換並取餘數。
直到其中一個取餘數為 0 時,就回傳另一個。
-
交換變數
此處有用到 參照 的觀念。
建議可以閱讀補充的 指標與位址
- Toj 170 / 各種星星樹
(待補)
遞迴
題目
- GCD 最大公因數
輸入 a 和 b,求兩者間的最大公因數
-
平方和
由 1 至 n 的平方和,前幾項如下:
f(1) = 12
f(2) = 12 + 22
f(3) = 12 + 22 + 32
f(4) = 12 + 22 + 32 + 42
輸入 n,求 1 至 n 的平方和
- Zerojudge c002: 10696 - f91
- Zerojudge e357: 遞迴函數練習
- Zerojudge c813: 11332 - Summing Digits
- Zerojudge d672: 10922 - 2 the 9s
- Zerojudge d487: Order's computation process
題解
- GCD 最大公因數
- 平方和
- Zerojudge c002: 10696 - f91
- Zerojudge e357: 遞迴函數練習
- Zerojudge c813: 11332 - Summing Digits
- Zerojudge d672: 10922 - 2 the 9s
(待補)