> 1 <

Автор Сообщение

leest

Members


Статус

11 сообщений

Где: Russia
Род занятий:
Возраст:

#1558   2010-03-15 21:12 GMT+3 часа(ов)      
Продолжаю изучение хLispa. сижу решаю такую задачку: напишите функцию (f n), которая выводила бы список из 0 и 1 (двоичная система) натурального числа n. я пробовал сделать так:

(defun f (n)
(labels
((sp (n s)
(cond ((= n 0) (append 0 s))
((= n 1) (append 1 s))
(t (and ((append (mod n 2) s) (sp (truncate (/ n 2)) s))))
)
))
(sp n nil)
)
)

т.е. если 0, добавляем 0 в список s, аналогично для единицы. иначе добавляем остаток от деления n на 2 и запускаем функцию заново с truncate (/ n 2). выдает ошибку... что делаю не так? подскажите пожалуйста. может нужно как-то на две функции разбить? или еще как-то??? заранее спасибо!

misha

Members


Статус

465 сообщений

Где: Yemen
Род занятий:
Возраст:

#1559   2010-03-16 00:06 GMT+3 часа(ов)      
Чуток исправил:
(defun f (n)                                             
(labels ((sp (n s)
(cond
((= n 0) (cons 0 s))
((= n 1) (cons 1 s))
(t (append (sp (truncate (/ n 2)) s)
(cons (mod n 2) s))))))
(sp n nil)))
 
> (f 5678)
(1 0 1 1 0 0 0 1 0 1 1 1 0)

leest

Members


Статус

11 сообщений

Где: Russia
Род занятий:
Возраст:

#1577   2010-03-16 10:23 GMT+3 часа(ов)      
Очередное преогромнейшее спасибо, Миша!
> 1 <


Онлайн :

0 пользователь(ей), 22 гость(ей) :