OCamlでintをべき乗する関数を作る
OCamlではなぜかintのべき乗を求める演算子が用意されていないようです。
floatなら5. ** 3.
と言う感じで**
演算子で簡単にべき乗を求められるのですが。。。
パット見た感じ、標準でpow関数も無い様です。 探したらありそうな気もしますが、せっかくなので自分でintの値のべき乗を求める関数を再帰関数として定義してみました。
# 普通の再帰関数を定義
utop # let rec pow value index =
if index <= 0 then 1
else value * pow value (index - 1);;
val pow : int -> int -> int = <fun>
# もしくはfunctionでパターンマッチバージョン
utop # let rec pow2 = function
(a, 0) -> 1
|(a, b) -> a * pow2 (a, b - 1);;
val pow2 : int * int -> int = <fun>
utop # assert((pow 5 1) = 5);;
utop # assert((pow 5 2) = 5 * 5);;
utop # assert((pow 5 3) = 5 * 5 * 5);;
utop # assert(pow2(5, 1) = 5);;
utop # assert(pow2(5, 2) = 5 * 5);;
utop # assert(pow2(5, 3) = 5 * 5 * 5);;
公開日:2019/10/28