パスワードを忘れた? アカウント作成
450045 journal

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
$

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
typodupeerror

アレゲはアレゲを呼ぶ -- ある傍観者

読み込み中...