相关疑难解决方法(0)

SICP练习1.6的解释是什么?

我刚刚开始通过SICP(我自己;这不适合一个班级),我已经在练习1.6中苦苦挣扎了几天,我似乎无法弄明白.这是Alyssa重新定义if的方式cond,如下所示:

(define (new-if predicate then-clause else-clause)
    (cond (predicate then-clause)
          (else else-clause))
Run Code Online (Sandbox Code Playgroud)

她在一些简单的情况下成功测试它,然后用它来重新编写平方根程序(它工作得很好if):

(define (sqrt-iter guess x)
    (new-if (good-enough? guess x)
            guess
            (sqrt-iter (improve guess x)
                       x)))
Run Code Online (Sandbox Code Playgroud)

然后问题是:"当Alyssa试图用它来计算平方根时会发生什么?解释." [如果有必要,我很高兴能重现其他程序(good-enough?,improve,等),只是让我知道.]

现在,我知道会发生什么:它永远不会返回一个值,这意味着程序无限地递归.我无法解释为什么会这样.无论之间存在什么微妙的差异,if并且new-if正在逃避我.任何和所有帮助非常感谢.

recursion sicp

58
推荐指数
5
解决办法
7946
查看次数

标签 统计

recursion ×1

sicp ×1