ユークリッドの互除法で最大公約数

2007年12月15日
1 分

プログラミング in OCaml 関数型プログラミングの基礎からGUI構築まで p.51より。再帰的に定義する。

# let rec euclid m n =
if m = n then m
else if m > n then euclid n m
else euclid (n - m) m
;;
val euclid : int -> int -> int = <fun>
# euclid 12 60;;
- : int = 12
# euclid 12 6;;
- : int = 6

基本的には m≦n のつもりで書いているけど,n - m と m の大小関係は決定できないので3行目を入れた。これで m と n の大小関係も気にしなくて済んでいる。