Форум программистов, компьютерный форум, киберфорум
Lisp
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
0 / 0 / 1
Регистрация: 19.12.2011
Сообщений: 15
1

LISP простая рекурсия

21.05.2012, 13:35. Показов 1369. Ответов 2
Метки нет (Все метки)

необходимо написать маленькую программу, с использованием управляющих форм LISPa.

реализовать: нахождение разности списков R=S1/S2 (элементы всех уровней).
тип рекурсии: параллельное ветвление рекурсии.
форма представление результата: результатом есть список, содержащий исходный и результирующие.

помогите пожалуйста!. спасибо!
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.05.2012, 13:35
Ответы с готовыми решениями:

Простая рекурсия. Common Lisp
Составить функцию destruct_last с одним аргументом - списком, функцию которая исключала бы из этого...

Рекурсия в LISP
Можете помочь написать решение этих двух задачек с помощью рекурсий??? 1. Определить функцию...

Рекурсия в LiSP
1.Определить функцию remove_all_vocals, которая удаляет из списка все гласные (на разных уровнях...

Lisp - рекурсия и предикаты
Привет! Нужно написать функцию, которая из списка будет удалять все числа. Алгоритм понятен: 1....

2
Модератор
Эксперт функциональных языков программированияЭксперт Python
29207 / 15964 / 3175
Регистрация: 12.02.2012
Сообщений: 26,266
Записей в блоге: 5
21.05.2012, 14:17 2
Пойдет?

Lisp
1
2
3
4
5
6
7
8
9
10
(defun dif-list (x y) (cond ((null x) nil)
                            ((member (car x) y) (dif-list (cdr x) y))
                            (t (append (list (car x)) (dif-list (cdr x) y)))))
 
 
==> dif-list
 
(dif-list '(1 2 3 4) '(2 4))
 
==> (1 3)
0
0 / 0 / 1
Регистрация: 19.12.2011
Сообщений: 15
21.05.2012, 21:14  [ТС] 3
спасибо)

да, почти)

только забыл написать, что нужно использовать отдельные функции + ввод данных + progn. например:

Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
(defun paste (a s)
  (cond ((null s) (list a))
        ((> a (car s)) (cons a s))
        (T (cons(car s)(paste a (cdr s))))
        )
  )
 
(defun sortv (s res)
  (if (null s) res
    (sortv(cdr s)(paste (car s)res))
    )
  )
 
(defun sorts (s1 s2)
  (sortv (append s1 s2) '())
  )
 
(defun start ()
  (progn
    (format t "Vvedite dva spiska; vvoditsya, poka ne vvedeno 0: ")
    (sorts (readlist(read)) (readlist (read)) ) 
    )
  )
 
(defun readlist (inp)
  (if (= inp 0) nil (cons inp (readlist (read))  )
    )
  )
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.05.2012, 21:14

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Рекурсия CDR в Lisp
Помогите написать функцию которая формирует список таким образом: первый элемент произведение...

Как работает рекурсия в Common Lisp
Добрый день, я новичок в Лисп и написал простенькую функцию по подсчету кол-ва элементов в списке:...

Простая рекурсия
Помогите пожалуйста: Составить функцию factor с одним аргументом - числом, результатом действия...

Простая рекурсия
Определить две рекурсивных функции. Распечатать результаты трассировки. Указать вид рекурсии (по...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.