Lisp 解构递归过程-SICP

Lisp 解构递归过程-SICP,lisp,scheme,tail-recursion,sicp,Lisp,Scheme,Tail Recursion,Sicp,考虑以下定义: (define foo (lambda (x y) (if (= x y) 0 (+ x (foo (+ x 1) y))))) 什么是测试表达式?(写入实际表达式,而不是其值) 我认为这只是(如果(=x y),但是麻省理工6.001在线导师不接受这个答案。测试将是: (= x y) 这是一个实际返回布尔值的表达式,如果条件表达式的行为取决于它-如果它是#t(或者通常是:任何非假值),则随后的部分

考虑以下定义:

   (define foo
     (lambda (x y)
        (if (= x y)
            0
            (+ x (foo (+ x 1) y)))))
什么是测试表达式?(写入实际表达式,而不是其值)

我认为这只是(如果(=x y),但是麻省理工6.001在线导师不接受这个答案。

测试将是:

(= x y)

这是一个实际返回布尔值的表达式,
如果
条件表达式的行为取决于它-如果它是
#t
(或者通常是:任何非假值),则随后的部分将被执行:
0
。只有当它是
#f
时,替代部分将被执行:
(+x(foo(+x1)y))

为了IF、COND、OR和and语句的目的,scheme将任何不为f的内容解释为true。