![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 13.11.2009
Сообщений: 70
|
![]()
Добрый день!
Есть такое задание: необходимо из списка (a b c d e f g h i j k l m n) рекурсивно получить список (a c e f g h i j k l m n), т.е. убрать из него два первых четных элемента (setq x '(a b c d e f g h i j k l m n) ) (defun f (l) (cond ((null (cdr l)) nil) (t (cons (car l) (f (cddr l))) ) ) ) (princ x) (terpri) (princ (f x)) преобразует список к виду (a c e g i k m) подскажите один из вариантов как выйти из рекурсии после двух рекурсивных вызовов |
![]() |
![]() |
![]() |
#2 |
Участник клуба
Регистрация: 15.07.2008
Сообщений: 1,933
|
![]()
Можно, например, добавить опциональную переменную, которая будет хранить кол-во исключённых символов, и когда она будет равна 2, прекращать вызов. Или же определить вложенную функцию, с использованием labels, которая будет принимать помимо списка ещё и счётчик.
Код:
Код:
|
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 13.11.2009
Сообщений: 70
|
![]()
спасибо!
![]() |
![]() |
![]() |
![]() |
Опции темы | Поиск в этой теме |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
рекурсия | dimok5 | Помощь студентам | 1 | 16.11.2010 18:37 |
рекурсия | DinaraIITU | Помощь студентам | 3 | 04.11.2010 15:39 |
Рекурсия | LegionuS | Паскаль, Turbo Pascal, PascalABC.NET | 4 | 29.09.2010 15:31 |
рекурсия | Lena neznayka | Помощь студентам | 2 | 16.06.2010 20:46 |
рекурсия | -Spirit- | Помощь студентам | 1 | 14.01.2010 16:40 |