Я читаю раздел 2.2 в SICP, где в книге представлена процедура добавления двух списков. Я пытаюсь реализовать приложение, используя итерацию.Итерационная программа для добавления списков в схеме
Это мой код:
(define (append list1 list2)
(define (append-iter item1 reversed-item1 result)
(if (null? item1)
(if (null? reversed-item1)
result
(append-iter item1
(cdr reversed-item1)
(cons (car reverse) result)))
(append-iter (cdr item1)
(cons (car item1) reversed-item1)
result)))
(append-iter list1 '() list2))
Хотя это работает, но отмечая число итераций в два раза длина list1
. Есть ли решение, число итераций которого равно длине list1
. (без использования функции сгиба)?