リストをコピーするヘルパーがあります:
(define (list-copy list)
(if (null? list)
'()
(cons (car list) (list-copy (cdr list)))))
それで、
(define (multList lst1 lst2)
(define lstCopy2 (list-copy lst2))
(cond ((null? lst1) ())
((eq? (length lst1) (length lst2)) (cons (* (car lst1) (car lst2)) (multList (cdr lst1) (cdr lst2))))
((> (length lst1) (length lst2))
(if (null? lst2) lstCopy2
(cons (* (car lst1) (car lst2)) (multList (cdr lst1) (cdr lst2)))))
(else '())))
lst2 を lstCopy2 にコピーしようとしていますが、lst2 を (lstCopy2 の助けを借りて) 呼び出すために lst2 で作業しているときに、最初と同じように lstCopy2 をそのままにしておきたいと思います。私の3番目の条件(長さlst1>長さlst2の場合)lst2 =()の場合、lst1が()になるまでプロセスを続行したいと思います。
ご協力いただきありがとうございます