Деконструкция рекурсивного процесса - 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))
,