Эта функция является функцией CLisp, это часть проблемы с домашним заданием, но она должна быть написана в другом формате (вторая функция).
(defun range (m M) (cond
((> m M) '() )
((= m M) '() )
((< m M) (cons m (range (+ m 1) M ) ) )
)
)
(define (range m M) (cond
((> m M) '() )
((= m M) '() )
((< m M) (cons m (range (+ m 1) M ) ) )
)
)
Они должны принимать минимальное значение (m) и максимальное значение (M) и возвращать список целых чисел от минимального до максимального (исключая максимальное значение / M-1)
Я прослеживал это снова и снова, и я не понимаю, почему он просто возвращает NIL, это должно быть очень глупой логической ошибкой.
(range 1 4) => result (1 2 3)
m=1 | M=4 ==> return (cons 1 (2 3) )
m=2 | M=4 ==> return (cons 2 (3) )
m=3 | M=4 ==> return (cons 3 () )
m=4 | M=4 ==> return ()
v ^
---------/
Я схожу с ума, пытаясь понять, ПОЧЕМУ это не работает так, как я прослеживаю.
Опять же, когда я выполняю функцию, это приводит к NIL.