Деконструкция рекурсивного процесса - SICP

Рассмотрим следующее определение:

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

Что такое тестовое выражение? (напишите фактическое выражение, а не его значение)

Я думаю, что это просто (если (= x y), но он-лайн репетитор MIT 6.001 не принимает этот ответ.

1 ответ

Решение

Тест будет:

(= x y)

Это выражение, которое на самом деле возвращает логическое значение, и поведение if от этого зависит условное выражение - если оно #t (или вообще: любое неверное значение) будет выполнена следующая часть: 0, Только если это #f альтернативная часть будет выполнена: (+ x (foo (+ x 1) y)),

Другие вопросы по тегам