演算法(algorithm)的定義及特性如下。
演算法的定義
演算法是在有限的步驟內,解決特定問題的明確描述。
演算法的特性
- 輸入(input):演算法會有零或一個輸入。
- 輸出(output):演算法會有一個或多個輸出。
- 有限性(finiteness):演算法應在有限的步驟內完成。
- 明確性(definiteness):演算法的每一個步驟應明確而不含糊的。
- 有效性(effectiveness):演算法的每一個步驟應可被執行且有效。
例如給定一個整數n,並計算每個位數的加總,算法可以是如下(Java遞迴)。
int add(int n) {
if (n < 1) {
return 0;
} else {
return (n % 10) + add(n / 10);
}
}
或是將n轉為字串再拆解每個位數的字然後加總。
int add(int n) {
int sum = 0;
for(char c : Integer.toString(n).toCharArray()) {
sum += c - '0';
}
return sum;
}
// Java 8
int add(int n) {
return Integer.toString(n).chars().map(c -> c - '0').sum();
}
上面範例皆為演算法,不論是否為好的演算法,仍滿足了演算法的特性,有一個輸入參數,回傳一個輸出,在有限的步驟內完成,每一個步驟都明確且可被執行,且結果是有效的。
2 則留言:
hi,演算法的特性第一點有筆誤,最後應該是輸"入"而不是"出"。
HI 樓上,謝謝您的好眼力
張貼留言