リスト形式を維持しながら、2 つの数値 (リストから) をスキームに追加しようとしています。ただし、計算に使用されている数値が 10 以上になると、望ましくない結果が得られます。例えば:
(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)
このエラーを修正するためにコードを変更するにはどうすればよいですか? 次の呼び出しのtoのlet
評価を追加できるようにステートメント を使用したかったのですが、これを行う方法が思いつきませんでした。(quotient (+ (car lst1) (car lst2)) 10)
(list (+ (car lst1) (car lst2)))