解构递归过程 - SICP

时间:2013-06-08 01:40:57

标签: lisp scheme tail-recursion sicp

考虑以下定义:

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

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

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

1 个答案:

答案 0 :(得分:3)

测试将是:

(= x y)

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