t-nissieの日記: べき乗計算をF#でしてみた(2)
日記 by
t-nissie
これ、「スタックがあふれました」っていうエラーにならないのは
「末尾再帰最適化」ができているからではなく、単に呼び出しの回数
が高々31回だからだな。たぶん。
$ cat power.fs
#light
let even n =
(n % 2)=0
let square (x : float) =
x * x
let rec power (x : float) n =
if n = 0 then
1.0
else
if even n then
power (square x) (n / 2)
else
x * power x (n - 1)
printfn "%g" (power 1.00001 10000000)
$ fsc.exe -i power.fs && chmod 755 power.exe && ./power.exe
module Power
val even : int -> bool
val square : float -> float
val power : float -> int -> float
2.68677e+43
$
べき乗計算をF#でしてみた(2) More ログイン