Что я пытаюсь сделать, это взять два списка и добавить их вместе, как и каждый список - целое число.произвольное добавление точности с использованием списков цифр
(define (reverse lst)
(if (null? lst)
'()
(append (reverse (cdr lst))
(list (car lst)))))
(define (apa-add l1 l2)
(define (apa-add-help l1 l2)
(cond ((and (null? l1) (null? l2)) '())
((null? l1) (list (+ (apa-add-help '() (cdr l2)))))
((null? l2) (list (+ (apa-add-help (cdr l1) '()))))
((>= (+ (car l1) (car l2)) 10)
(append (apa-add-help (cdr l1) (cdr l2))
(list (quotient (+ (car l1) (car l2)) 10))
(list (modulo (+ (car l1) (car l2)) 10)))) ;this is a problem
(else (append (apa-add-help (cdr l1) (cdr l2))
(list (+ (car l1) (car l2)))))))
(apa-add-help (reverse l1) (reverse l2)))
(apa-add '(4 7 9) '(7 8 4))
>'(1 1 1 5 1 3)
Я знаю, что проблема вращалась вокруг моей рекурсии, я изменил порядок списков, чтобы для облегчения процесса, однако я не могу понять, как добавить мое по модулю значения (переносится значение) к следующему объекту в списке. Как я могу это сделать?
Im несколько запутался в том, что происходит в вашем коде, что такое функция цикла? И нести 0? – LostSchemer
См. Мое редактирование для _named let_. Carry - это значение выше 10, которое переносится на следующее добавление, деленное на 10. – uselpa
Хорошо, я вижу это сейчас, еще один вопрос .... что такое res? – LostSchemer