Форум программистов, компьютерный форум, киберфорум
Lisp
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
0 / 0 / 0
Регистрация: 14.12.2012
Сообщений: 17

Проблема с рекурсивными функциями на Lisp

14.12.2012, 14:39. Показов 1645. Ответов 20
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
надо написать две программы с использованием рекурсии на лисп
1)оставляет в списке х из каждой группы подряд идущих одинаковых элементов только один (пример '( 1 1 1 2 2 3 1 1 2 2) результат должен быть ( 1 2 3 1 2)
и 2) суммирует первые n чисел из одноуровнего списка х.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
14.12.2012, 14:39
Ответы с готовыми решениями:

Предупреждение в программе с рекурсивными функциями
Вопрос по институтскому заданию. Задача. Описать рекурсивные функции для определения pi, hi. Задать значение z и вычислить с. p1=cos 1;...

Задачи с рекурсивными функциями и перегрузкой функций
Здравствуйте, нужно доделать лабу, большинство задач сделала, а эти не могу, не знаю как делать. Помогите пожалуйста. 7. ...

Лямбда выражениями и функциями языка Lisp
Всем привет! Помогите пожалуйста разработать функцию, объединяющую два списка в результирующий список, в котором чередуются элементы...

20
VH
431 / 259 / 23
Регистрация: 23.11.2010
Сообщений: 278
14.12.2012, 15:51
Lisp
1
2
3
4
5
6
(defun F (L)
 (cond
  ((null L) nil)
  ((null (cdr L)) L)
  ((equal (car L) (cadr L)) (F (cdr L)))
  (T (cons (car L) (F (cdr L))))))
Lisp
1
2
3
4
5
6
7
(defun F (L N)
 (cond
  ((minusp N) nil)
  ((zerop N) 0)
  ((null L) nil) ; преждевременное окончание списка
  ((numberp (car L)) (+ (car L) (F (cdr L) (1- N))))
  (T (F (cdr L) N))))
1
0 / 0 / 0
Регистрация: 14.12.2012
Сообщений: 17
14.12.2012, 16:02  [ТС]
спасибо за помошь)

Добавлено через 9 минут
маленький вопрос как задать функцию в во втором задании (типо (F '2 '(1 2 3 4 5))) как именно?)
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38173 / 21108 / 4307
Регистрация: 12.02.2012
Сообщений: 34,711
Записей в блоге: 14
14.12.2012, 16:11
Вторая задача для числового списка (при условии, что n <= длины списка):

Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
(defun sum-n (lst n)
  (cond ((= n 0) 0)
        (t (+ (car lst) (sum-n (cdr lst) (- n 1))))))
 
==> sum-n
 
(sum-n '(1 2 3 4 5 6) 4)
 
==> 10
 
(sum-n '(1 2 3 4 5 6) 3)
 
==> 6
1
0 / 0 / 0
Регистрация: 14.12.2012
Сообщений: 17
14.12.2012, 16:47  [ТС]
Спасибо за помошь)
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38173 / 21108 / 4307
Регистрация: 12.02.2012
Сообщений: 34,711
Записей в блоге: 14
14.12.2012, 17:16
А зачем тянуть?

Lisp
1
2
3
4
5
6
7
8
9
10
(defun del-if (func n m lst)
  (cond ((null lst) nil)
        ((funcall func n m (car lst)) (cons (car lst) (del-if func n m (cdr lst))))
        (t (del-if func n m (cdr lst)))))
 
==> del-if
 
(del-if #'(lambda (n m y) (And (>= y n) (<= y m))) 4 6 '(1 2 3 4 5 6 7 1 2 3 4 5 6 7))
 
==> (4 5 6 4 5 6)
В примере функция (заданная лямбда-выражением) оставляет только числа из интервала [n,m].


Lisp
1
2
3
(del-if #'(lambda (n m y) (= (* y y) (+ (* n n) (* m m)))) 3 4 '(1 2 3 4 5 6 7 1 2 3 4 5 6 7))
 
==> (5 5)
А в этом примере остаются только элементы списка, удовлетворяющие соотношению x2=n2+m2
1
0 / 0 / 0
Регистрация: 14.12.2012
Сообщений: 17
14.12.2012, 17:19  [ТС]
спасибо большое)
я даж не знаю как тут фразу сформулировать про трату свое личного времени на помошь неизвестному программисту новечку)
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38173 / 21108 / 4307
Регистрация: 12.02.2012
Сообщений: 34,711
Записей в блоге: 14
14.12.2012, 17:27
Не стоит благодарности... Разберитесь в Лиспе! Это красивый язык, не пожалеете!
0
0 / 0 / 0
Регистрация: 14.12.2012
Сообщений: 17
14.12.2012, 17:47  [ТС]
ну есть чтото в нем цепляющее (+ на сколько мне известно на нем Автокад написан) просто времени маловато осталось до зачетной недели и сессии)

Добавлено через 15 минут
а не подскажите как задать условие чтоб вывело кратные типо (2, 3) и он выводи числа которые не делятся на 2 и 3
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38173 / 21108 / 4307
Регистрация: 12.02.2012
Сообщений: 34,711
Записей в блоге: 14
14.12.2012, 17:52
Lisp
1
2
3
4
5
6
7
8
9
10
11
;; кратные n или m
 
(del-if #'(lambda (n m y) (OR (= 0 (rem y n)) (= 0 (rem y m)))) 3 4 '(1 2 3 4 5 6 7 1 2 3 4 5 6 7))
 
==> (3 4 6 3 4 6)
 
;; все, кроме кратных n или m
 
(del-if #'(lambda (n m y) (AND (<> 0 (rem y n)) (<> 0 (rem y m)))) 3 4 '(1 2 3 4 5 6 7 1 2 3 4 5 6 7))
 
==> (1 2 5 7 1 2 5 7)
1
0 / 0 / 0
Регистрация: 14.12.2012
Сообщений: 17
14.12.2012, 17:54  [ТС]
А я пытлся через знак "/" сделать)
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38173 / 21108 / 4307
Регистрация: 12.02.2012
Сообщений: 34,711
Записей в блоге: 14
14.12.2012, 18:08
"/" - это частное, а нужен остаток
0
Заблокирован
14.12.2012, 19:07
Цитата Сообщение от Mev Посмотреть сообщение
на сколько мне известно на нем Автокад написан
это не так, ядро автокада написано на с++, библиотеки на c# и vb.net
1
0 / 0 / 0
Регистрация: 14.12.2012
Сообщений: 17
25.12.2012, 22:26  [ТС]
(del-if #'(lambda (n m y) (OR (= 0 (rem y n)) (= 0 (rem y m)))) 3 4 '(1 2 3 4 5 6 7 1 2 3 4 5 6 7))


а как тоже самое написать только без лямбда замыкателя?)
0
 Аватар для _sg
4709 / 4404 / 380
Регистрация: 12.05.2012
Сообщений: 3,101
25.12.2012, 22:50
Lisp
1
2
3
4
5
6
7
(defun fold-n-m (w n m)
  (cond ((null w) nil)
        ((= 0 (mod (car w) n) (mod (car w) m)) (cons (car w) (fold-n-m (cdr w) n m)))
        ((fold-n-m (cdr w) n m))))
 
> (fold-n-m '(1 2 3 4 5 6 7 8 9 10 11 12) 2 3)
(6 12)
0
0 / 0 / 0
Регистрация: 14.12.2012
Сообщений: 17
25.12.2012, 22:53  [ТС]
немного не то.

Lisp
1
2
3
4
5
6
(defun del-if (func n m lst)
  (cond ((null lst) nil)
        ((funcall func n m (car lst)) (cons (car lst) (del-if func n m (cdr lst))))
        (t (del-if func n m (cdr lst)))))
 del-if
>(del-if #'(lambda (n m y) (OR (= 0 (rem y n)) (= 0 (rem y m)))) 3 4 '(1 2 3 4 5 6 7 1 2 3 4 5 6 7))
; в этом случае как задать тоже самое но без лямбда замыкателя?
0
 Аватар для _sg
4709 / 4404 / 380
Регистрация: 12.05.2012
Сообщений: 3,101
25.12.2012, 23:05
если без lambda, то теряется смысл определения del-if:
Lisp
1
2
3
4
5
6
7
(defun del-if (n m lst)
  (cond ((null lst) nil)
        ((or (= 0 (rem (car lst) n)) (= 0 (rem (car lst) m))) (cons (car lst) (del-if n m (cdr lst))))
        (t (del-if n m (cdr lst)))))
 
> (del-if 2 3 '(1 2 3 4 5 6 7 8 9 10 11 12))
(2 3 4 6 8 9 10 12)
1
0 / 0 / 0
Регистрация: 14.12.2012
Сообщений: 17
25.12.2012, 23:07  [ТС]
хм... спасибо за посошь)
0
 Аватар для _sg
4709 / 4404 / 380
Регистрация: 12.05.2012
Сообщений: 3,101
25.12.2012, 23:13
или так:
Lisp
1
2
3
4
5
6
7
8
9
10
(defun check (n m a)
  (or (= 0 (rem a n)) (= 0 (rem a m))))
 
(defun del-if (n m lst)
  (cond ((null lst) nil)
        ((check n m (car lst)) (cons (car lst) (del-if n m (cdr lst))))
        (t (del-if n m (cdr lst)))))
 
> (del-if 2 3 '(1 2 3 4 5 6 7 8 9 10 11 12))
(2 3 4 6 8 9 10 12)
0
0 / 0 / 0
Регистрация: 14.12.2012
Сообщений: 17
25.12.2012, 23:15  [ТС]
думаю так лучше будет)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
25.12.2012, 23:15
Помогаю со студенческими работами здесь

Функции в Erlang'e, схожие с функциями в Lisp'e. Помогите найти описания
Помогите, пожалуйста, найти описание функций для Erlang'a для приведенных ниже функций Лиспа. Желательно с небольшим примером для каждой...

Проблема с функциями
У меня есть такое задание: Написать функцию digitSum, которая получает целое положительное число и возвращает суму его цифр. Используйте...

Проблема с виртуальными функциями
Привет. Столкнулся с небольшой проблемой, касательно виртуальных функций. Стыдно спрашивать, ибо это нечто элементарное. Просто я уже...

OpenGL, проблема с функциями.
Проблема состоит в том, что если я пытаюсь перенести параметры создания окна в OpenGL в функцию то окно не создается, а если в майн то все...

проблема со структурой и функциями
Задание: 1. Описать структуру с именем ZNAK, содержащую следующие поля: • фамилия, имя; • знак Зодиака; • день рождения (массив из...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru