【问题标题】:code logical error in SMLSML 中的代码逻辑错误
【发布时间】:2013-11-07 11:18:33
【问题描述】:

我在康奈尔课程中使用下面的代码求平方根,但是代码返回错误的值,代码是

fun squareRoot(x: real): real =
  let
    val delta = 0.0001
    fun goodEnough(guess: real): bool =
      if(abs(guess*guess - x) < delta) then true else false
    fun improve(guess: real): real =
      (guess + x/guess) / 2.0
    fun tryGuess(guess: real): real =
      if goodEnough(guess) then guess
      else tryGuess(improve(guess))
  in
    tryGuess(1.0)
  end

执行时

 use "squareroot1.sml";
[opening squareroot1.sml]
val squareRoot = fn : real -> real
val it = () : unit
- squareroot 9.0;
val it = 1.0 : real
-

它总是以 root 身份返回 1.0 你能告诉我为什么会这样吗?

【问题讨论】:

  • 我收到了val it = 3.0000000014 : real 的代码。您是否忘记保存或加载错误的文件?
  • 没有同一个文件.....我的 SMLNJ 安装有问题吗?
  • 尝试将代码直接输入解释器,而不是使用“use”,看看是否有效。

标签: smlnj


【解决方案1】:

调用函数时出现拼写错误,需要将squareroot改为squareRoot

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-02-21
    • 1970-01-01
    • 1970-01-01
    • 2013-12-21
    • 1970-01-01
    • 2022-01-10
    • 2011-09-21
    相关资源
    最近更新 更多