> 1 <
Автор | Сообщение |
MasterJedi
3 сообщений |
#4251 2011-05-09 01:46 GMT+3 часа(ов) |
Необходимо создать функцию, удваивающую значения элементов списка. Единственным аргументом функции будет список))
Идея, как понимаю такова: брать, что возвращает (CAR <данный_список>) и умножать на 2. Рекурсивно вызывать данную функцию с аргументом CDR <данный_список>. Проблема возникает, как описать условие выхода из рекурсии? На прологе у меня это выглядело так:
отредактировал(а) MasterJedi: 2011-05-09 20:01 GMT+3 часа(ов) |
|
megamanx
307 сообщений |
#4252 2011-05-09 15:12 GMT+3 часа(ов) |
if (null L) nil
а вообще, если задача не ставилась решать рекурсивно, то проще через отображение: mapcar #'(lambda(x)(* x 2)) L |
|
I wish I'd made you angry earlier
|
|
misha![]()
1275 сообщений |
#4253 2011-05-09 16:53 GMT+3 часа(ов) |
> if (null L) nil
В лиспе отсутствует булев тип, поэтому проверка на nil является лишней. |
|
MasterJedi
3 сообщений |
#4255 2011-05-09 20:05 GMT+3 часа(ов) |
Цитата Спасибо, буду разбираться с mapcar. К сожалению, "if" вряд ли дадут использовать, поэтому только остается только cond, для проверки условия. |
|
misha![]()
1275 сообщений |
#4259 2011-05-10 03:09 GMT+3 часа(ов) |
(defmacro myif (test then else) |
|
> 1 <