;Naam : Van Belle Werner ;Groep : C ;Trolnummer : we47091 ;---------------------------------------------------------------------- ;kzkoesie moi voor het late antwoord maar door de fantastische aandacht ;van mijner twege naar uwer twege tijdens de les heeft deze jongen ;gisteren de foute oplossing gemailed. ;Laten we maar van start gaan : ik heb twee recursieve versies ;geschreven, beide met een verschillende performantie (denk ik toch) (define (Sum-list l1 l2) (cond ((null? l1) l2) ((null? l2) l1) (else (append (list (+ (car l1) (car l2))) (Sum-list (cdr l1) (cdr l2)))))) ;bovenstaande oplossing gaat maar is niet erg efficient omdat ik door het ;gebruik van een append er voor zorg dat bij elke terugkeer uit een recursie ;de ganse lijst opnieuw aan een element wordt gehangen. ;Daarom biedt ik U een verbetering aan : (define (Sum-list2 l1 l2) (cond ((null? l1) (if (null? l2) '() (cons (car l2) (Sum-list2 '() (cdr l2))))) ((null? l2) (cons (car l1) (Sum-List2 (cdr l1) '()))) (else (cons (+ (car l1) (car l2)) (Sum-list2 (cdr l1) (cdr l2)))))) ;dan nu de gevraagde iteratieve versie ;Hierin gebruik ik ook een 'append' maar hier kan het zoveel kwaad niet ;omdat het element dat ik er aan hang meestal toch maar een element is ;en omdat dit ding toch niet met 'consen' te solven is. (define (Sum-list3 l1 l2) (define (iter result l1 l2) (cond ((null? l1) (append result l2)) ((null? l2) (append result l1)) (else (iter (append result (list (+ (car l1) (car l2)))) (cdr l1) (cdr l2))))) (iter '() l1 l2))