Как построить список, элементами которого являются суммы соответствующих элементов двух заданных списков в scheme - Lisp
Формулировка задачи:
Здравствуйте. Помогите с решением задачи
Мне нужно получить список, элементами которого являются суммы соответствующих элементов двух заданных списков. У меня получилось написать функцию которая суммирует 2 попарных элемента в новый список. Как суммировать все в один список? Только через рекурсию
scheme
мой вывод (7) (7) (9) , а мне нужно получить вывод (7 7 9)
Подскажите пожалуйста как решить задачу
(define (fs s1 s2 ) ( if (not (null? s1)) ( begin (display (cons (+ (car s1) (car s2)) '())) (newline) (fs (cdr s1) (cdr s2)) ))) (display (fs '(3 2 3) '(4 5 6)))
Решение задачи: «Как построить список, элементами которого являются суммы соответствующих элементов двух заданных списков в scheme»
textual
Листинг программы
(define (f lst1 lst2) (if (null? lst1) '() (cons (+ (car lst1) (car lst2)) (f (cdr lst1) (cdr lst2))))) (display (f '(1 2 3) '(11 22 33)))
Объяснение кода листинга программы
В данном коде определённая функция с именем f, которая принимает два аргумента типа список (lst1 и lst2). Если lst1 является пустым списком (т.е. null?), то функция возвращает пустой список ('). В противном случае, функция возвращает новый список, в котором первый элемент — это сумма первого элемента lst1 и первого элемента lst2, а остальные элементы являются результатом рекурсивного вызова функции f для оставшейся части lst1 и lst2 (т.е. (cdr lst1) и (cdr lst2)). После определения функции, происходит вызов функции f с двумя аргументами: '(1 2 3) и '(11 22 33). Результат вызова функции (f '(1 2 3) '(11 22 33)) выводится на экран с помощью функции display.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д