小编Rit*_*uja的帖子

SML/NJ while 循环

我对 SML 真的很陌生,我不知道如何获得相同的答案;

它是这样的: 3^4 < 32 但 3^5 > 32 所以我的答案是 4 (3 的幂),类似地,如果我有数字 4 和 63 那么 4^2<63 但 4^3>63 所以我的答案是 2(4 的幂)。

我想出了以下代码

val log (b, n) =
    let
        val counter = ref b
        val value = 0
    in
        while !counter > n do 
        ( counter := !counter*b 
          value := !value + 1)
    end;
Run Code Online (Sandbox Code Playgroud)

所以这里的值是我需要的答案,但我遇到了很多错误。我知道我很多地方都错了。任何帮助,将不胜感激。

我也许可以用正常的机器学习方式做到这一点,但我也想学习不纯的机器学习......

fun loghelper(x,n,b) = if x>n then 0 else (1+loghelper((x*b),n,b)); 
fun log(b,n) = loghelper(b,n,b);
Run Code Online (Sandbox Code Playgroud)

好的,最后这是 while 循环的正确代码,它也可以工作;

      fun log (b, n) = …
Run Code Online (Sandbox Code Playgroud)

sml smlnj while-loop

5
推荐指数
1
解决办法
1万
查看次数

标签 统计

sml ×1

smlnj ×1

while-loop ×1