open Int64
fun collatz n =
let
fun f (1, i) = i
| f (n', i) =
if n' mod 2 = 0 then f (n' div 2, i + 1)
else f (n' * 3 + 1, i + 1)
fun loop 0 max = max
| loop n max =
let
val r = if n mod 2 = 0 then f (n div 2, 1) else f (n * 3 + 1, 1)
in
loop (n - 1) (if #2 max > r then max else (n, r))
end
in
loop n (n, 0)
end
val (n, step) = (collatz o fromLarge o IntInf.pow) (2, 20)
val _ = print ("f(" ^ toString n ^ ") = " ^ toString step ^ "\n")
omoikani
#5106()
[
StandardML
]
Rating0/0=0.00
open Int64 fun collatz n = let fun f (1, i) = i | f (n', i) = if n' mod 2 = 0 then f (n' div 2, i + 1) else f (n' * 3 + 1, i + 1) fun loop 0 max = max | loop n max = let val r = if n mod 2 = 0 then f (n div 2, 1) else f (n * 3 + 1, 1) in loop (n - 1) (if #2 max > r then max else (n, r)) end in loop n (n, 0) end val (n, step) = (collatz o fromLarge o IntInf.pow) (2, 20) val _ = print ("f(" ^ toString n ^ ") = " ^ toString step ^ "\n")Rating0/0=0.00-0+
[ reply ]