-1

考虑以下定义:

   (define foo
     (lambda (x y)
        (if (= x y)
            0
            (+ x (foo (+ x 1) y)))))

什么是测试表达式?(写实际的表达式,而不是它的值)

我认为这只是 (if (= xy) 但 MIT 6.001 On Line Tutor 不接受该答案。

4

1 回答 1

3

测试将是:

(= x y)

那是实际返回布尔值的表达式,if条件表达式的行为取决于它 - 如果它是#t(或通常:任何非假值),则后续部分将被执行:0. 只有当它是#f替代部分时才会执行:(+ x (foo (+ x 1) y)).

于 2013-06-08T01:46:28.460 回答