1
목록 형식을 보존하면서 scheme에 두 개의 숫자를 함께 추가하려고합니다. 그러나 계산에 사용되는 숫자가 10보다 크거나 같은 값을 더하면 원하지 않는 결과를 얻습니다. 예를 들어 :Scheme의 "임의의 정밀도 숫자 추가"
(define (reverse lst)
(if (null? lst)
'()
(append (reverse (cdr lst))
(list (car lst)))))
(define (apa-add lst1 lst2)
(cond ((null? lst1) lst2)
((null? lst2) lst1)
((>= (+ (car lst1) (car lst2)) 10)
(append (apa-add (cdr lst1) (cdr lst2))
(list (quotient(+ (car lst1) (car lst2)) 10))
(list (modulo (+ (car lst1) (car lst2)) 10))))
(else
(append (apa-add (cdr lst1) (cdr lst2))
(list (+ (car lst1) (car lst2)))))))
(apa-add (reverse '(4 4 5)) (reverse'(3 5 8)))
반환
'(7 9 1 3)
어떻게하면이 오류를 해결하기 위해 내 코드를 수정할 수 있습니까? let
문을 사용하여 (quotient (+ (car lst1) (car lst2)) 10)
의 평가를 다음 호출의 (list (+ (car lst1) (car lst2)))
에 추가 할 수 있었지만이 방법을 생각할 수 없었습니다.
예제에서 원하는 결과는 무엇입니까? – uselpa
당신은 캐리 알고리즘으로 손으로 덧셈을 수행하는 절차를 원합니다, 그렇습니까? 그리고 당신은 돌아 오기를 원했습니다. '(8 0 3) 네? – WorBlux
네, 원하는 출력입니다. –