Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Языки программирования > Lisp
Перезагрузить страницу Напишите функцию (fullength х), считающую полное количество атомов
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
balbec balbec вне форума
Новичок
 
Сообщений: 5
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 11.05.2011
Post Напишите функцию (fullength х), считающую полное количество атомов - 22.05.2011, 21:11

С Лиспом общаюсь совсем недавно.
Напишите функцию (fullength х), считающую полное количество атомов (не равных nil) в списке х. Исходный список может быть многоуровневым.

Вот мой вариант, он не считает атомы, если они во вложенном списке, можете подсказать?
lisp Код:
(defun FULLENGTH (X)
    (if X  
        (+
        (if (listp (car X)) 0 1)
        (FULLENGTH (cdr X))
        )
    0)
)

Вторая задачка
Определите функцию (f n), вычисляющую сумму: l*2*3+4*5*6+...+(n-2)*(n-1)*n, n кратно 3.

Сделал факториал
lisp Код:
(defun fac (n)
    (cond   ((= n 0)1)
            (t (* n (fac (- n 1))))
    )
)
А как сделать, чтобы вычислялось только в случае n кратно 3?
Язык XLisp.
Ответить с цитированием
  (#2 (permalink)) Старый
korvin korvin вне форума
Member
 
Аватар для korvin
 
Сообщений: 337
Сказал(а) спасибо: 1
Поблагодарили 15 раз(а) в 15 сообщениях
Регистрация: 25.01.2010
По умолчанию 23.05.2011, 09:01

1.
lisp Код:
(defun full-length (x)
  (cond
    ((null x) 0)
    ((atom x) 1)
    (t (+ 1 (full-length (car x)) (full-length (cdr x))))))
Ответить с цитированием
  (#3 (permalink)) Старый
VH VH вне форума
Member
 
Сообщений: 781
Сказал(а) спасибо: 0
Поблагодарили 11 раз(а) в 10 сообщениях
Регистрация: 29.06.2006
По умолчанию 23.05.2011, 11:03

2.
lisp Код:
(defun F (N)
 (cond
  ((minusp N) nil)
  ((zerop N) 0)
  (T
   ((lambda (result)
     (if result
      (+
       (* N (- N 1) (- N 2))
       result)))
    (F (- N 3))))))
Ответить с цитированием
  (#4 (permalink)) Старый
balbec balbec вне форума
Новичок
 
Сообщений: 5
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 11.05.2011
Thumbs up 23.05.2011, 14:05

Спасибо
Ответить с цитированием
Ads
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Напишите функцию для lst1 и lst2, где lst1-список символьных атомов lulu Lisp 5 23.12.2011 21:01
Напишите функцию, которая выдает истину svx78 Lisp 12 23.09.2011 08:43
Напишите функцию itob(n,s,b) sano32 Вопросы начинающих программистов 0 26.03.2011 07:19
Напишите функцию от двух аргументов x и n Sve234 Lisp 8 31.01.2011 13:36
Напишите функцию, распознающую логические формулы mario[x] Lisp 1 22.01.2011 19:15
Напишите функцию, которая переставляла бы элементы imported_Rick Lisp 0 25.12.2010 13:11
Напишите функцию REVERSE2, которая соединяет два списка PATRI0T Lisp 4 22.10.2010 11:49
Определите функцию,сортирующую список символьных атомов Prototip Lisp 0 16.12.2009 23:03
Напишите функцию Вычислить c тремя параметрами Replikon Lisp 2 21.03.2008 20:20
Написать процедурку, считающую количество бит Coder_perm Assembler 20 24.04.2004 13:07
Напишите функцию для двух аргументов imported_Irinka Lisp 4 27.03.2004 05:36
Напишите пожалуйста функцию перебора символов в строке Jonny Pascal 1 12.12.2003 12:20



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов