【问题标题】:Deconstructing a recursive process - SICP解构递归过程 - SICP
【发布时间】:2013-06-08 01:40:57
【问题描述】:

考虑以下定义:

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

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

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

【问题讨论】:

    标签: lisp scheme tail-recursion sicp


    【解决方案1】:

    测试将是:

    (= x y)
    

    这是实际返回布尔值的表达式,if 条件表达式的行为取决于它 - 如果它是 #t(或一般情况下:任何 非假 值) consequent 部分将被执行:0。只有当它是 #f 时,才会执行 alternative 部分:(+ x (foo (+ x 1) y))

    【讨论】:

    • 为了 IF、COND、OR 和 AND 语句,scheme 将任何非 #f 的内容解释为 true。
    猜你喜欢
    • 2017-01-19
    • 2013-06-19
    • 2015-02-02
    • 2016-02-24
    • 2021-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多