考虑以下定义:
(define foo
(lambda (x y)
(if (= x y)
0
(+ x (foo (+ x 1) y)))))
测试表达是什么? (写实际表达式,而不是它的值)
我认为这只是(if(= x y)但麻省理工学院6.001在线导师不接受这个答案。
答案 0 :(得分:3)
测试将是:
(= x y)
这是实际返回布尔值的表达式,if
条件表达式的行为取决于它 - 如果它是#t
(或者通常:任何非假 value)结果部分将被执行:0
。只有#f
替代部分才会被执行:(+ x (foo (+ x 1) y))
。