Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Языки программирования > Lisp
Перезагрузить страницу Определить рекурсивную функцию EAPPROX
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
Student2 Student2 вне форума
Member
 
Сообщений: 14
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 17.02.2007
По умолчанию Определить рекурсивную функцию EAPPROX - 17.02.2007, 18:17

1 Вычислить сумму ряда целых четных чисел от n до 2.
2 Определить функцию, реализующую головоломку «Ханойские башни».
3 Проверить, является ли дерево упорядоченным

4 Определить функцию A, такую, что A(п) есть список (Результатом является п). Так, для (А 12) значением функции будет список (Результатом является 12).
5 Определить функцию одного аргумента L, которая имеет значение T, если список L состоит из не более, чем четырех атомов и NIL в противном случае.
6 Определить функцию, содержащую условное выражение (используя COND), которое дает для списка L из трех элементов первый из этих трех, который является атомом, или список (Среди элементов списка нет атомов), если в списке атомов нет.

7 Определить рекурсивную функцию EAPPROX, такую, что EAPPROX(п) есть n-приближение числа e, основания натуральных логарифмов, т.е. сумма ряда 1+1/1!+1/2!+...1/n!.
Так, для (EAPPROX 10) значением функции будет 2,71828180114638. Установите связь между EAPPROX(п) и EAPPROX(п–1).
8 При помощи DEFUN определить две различные функции. Одна функция NOSUBS такая, что NOSUBS (L) есть T, если список L не содержит подсписков и NIL в противном случае. Другая – ALLLEFT использует NOSUBS так, что (ALLLEFT L) есть T, если все левые скобки, входящие в S-выражение, представляющее собой список L, являются крайними левыми скобками этого выражения Так, если L есть (((3 4) 2 1) 8 9), то результат выполнения (ALLLEFT L) есть T, но если L есть ((3 4) 2 1) (8 9)), то (ALLLEFT L) будет NIL.

9 Определить функционал NEXT-AND-PREV, такой, что NEXT-AND-PREV (F,L), использует каждую пару элементов списка L в качестве двух аргументов функции F, и записывает ее значения в результирующий список в позицию первого элемента пары. Так результат выполнения (NEXT-AND-PREV SUM ‘(1 1 2 3)) есть список (2 3 5).
10 Используйте функционал NEXT-AND-PREV и лямбда-выражение для включения в результирующий список в качестве подсписков всех пар элементов списка L. Так, результатом выполнения (NEXT-AND-PREV (ЛЯМБДА-ВЫРАЖЕНИЕ) ‘(A B (C D) F)) должен быть список ((A B) (B (C D)) ((C D) F)).

Кто может ПОМОГИТЕ!!! зачет в понедельник, послезавтра. Короче я в .опе.
Ответить с цитированием
  (#2 (permalink)) Старый
VH VH вне форума
Member
 
Сообщений: 781
Сказал(а) спасибо: 0
Поблагодарили 11 раз(а) в 10 сообщениях
Регистрация: 29.06.2006
По умолчанию 18.02.2007, 04:40

1.
Только если число n четное
Вариант 1:
Код:
(defun F (n)
  (/ (* n (+ n 2)) 4))
Вариант 2:
Код:
(defun F (n)
  (if (< n 2) 0
   (+ n (F (- n 2)))))
2.
Хювёнен-Сеппянен "Мир Лиспа" т.2 стр.33-34
Код:
(defun HANOI-TOWERS (height)
  (progn
   (transfer 'A 'B 'C height)
   'READY))
Код:
(defun TRANSFER (from to aux n)
  (cond
   ((= n 1) (output from to))
   (T (TRANSFER from aux to (- n 1))
      (output from to)
      (TRANSFER aux to from (- n 1)))))
Код:
(defun OUTPUT (from to)
  (format T "~S -> ~S~%" from to))
3.
Какое дерево называется упорядоченным и как оно представлено?
4.
Код:
(defun A (n)
  (list 'Result 'is n))
5.
Код:
(defun F (L &optional (_acc 0))
  (if (null L) (< _acc 5)
   (if (atom (car L)) (F (cdr L) (1+ _acc)))))
6.

7.

8.
Код:
(defun NOSUBS (L)
  (if (null L) T
   (if (car L)
    (if (atom (car L)) (NOSUBS (cdr L))))))
Код:
(defun ALLLEFT (L)
  (if (atom L) T
   (if (null L) T
    (if (NOSUBS (cdr L)) (ALLLEFT (car L))))))
9.
Код:
(defun NEXT-AND-PREV (F L)
  (if (cdr L)
   (cons (apply F (list (car L) (cadr L))) (NEXT-AND-PREV F (cdr L)))))
10.
Код:
(next-and-prev 'LIST список)
Ответить с цитированием
  (#3 (permalink)) Старый
Student2 Student2 вне форума
Member
 
Сообщений: 14
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 17.02.2007
По умолчанию 18.02.2007, 21:49

ООО, огромное Спасибо!!! Просто БОЛЬШУЩЕЕ!!!

Задание 3 там деревот типа классического бинарного. Где корень, левое и правое поддерево. Упорядоченность - когда значение правого поддерева больше значения корня. Ну и так далее.

Еще и инет отрубило на выходные, наверное завтра ничего не сдам, но Вы мне очень помогли. Еще раз Спасибо!!!
Ответить с цитированием
  (#4 (permalink)) Старый
VH VH вне форума
Member
 
Сообщений: 781
Сказал(а) спасибо: 0
Поблагодарили 11 раз(а) в 10 сообщениях
Регистрация: 29.06.2006
По умолчанию 19.02.2007, 00:59

7.
Очень неэффективно:
Код:
(defun N! (n)
  (if (zerop n) 1
   (* n (N! (1- n)))))
Код:
(defun EAPPROX (n)
  (if (zerop n) 1
   (+ (/ 1 (n! n)) (EAPPROX (1- n)))))
Более эффективно - нет повторного вычисления факториала при создании списка слагаемых:
Код:
(defun SEQ (n)
  (if (zerop n) '(1)
   ((lambda (result)
     (cons (/ (car result) n) result))
    (SEQ (1- n)))))
Код:
(defun EAPPROX (n)
  (apply '+ (seq n)))
Более эффективно - нет излишней затраты места под список слагаемых:
Код:
(defun SEQ (n)
  (if (zerop n) (cons 1 1)
   ((lambda (result)
     ((lambda (sum add)
       (cons (+ add sum) add))
      (car result)
      (/ (cdr result) n)))
    (SEQ (1- n)))))
Код:
(defun EAPPROX (n)
  (car (seq n)))
3.
Что такое "значение поддерева"?
Ответить с цитированием
  (#5 (permalink)) Старый
VH VH вне форума
Member
 
Сообщений: 781
Сказал(а) спасибо: 0
Поблагодарили 11 раз(а) в 10 сообщениях
Регистрация: 29.06.2006
По умолчанию 19.02.2007, 13:58

6.
Для любого количества элементов в списке L:
Код:
(defun FINDATOM (L)
  (cond
   ((null L) '(There is no atoms in the list))
   ((atom (car L)) (car L))
   (T (FINDATOM (cdr L)))))
Ответить с цитированием
Ads.
  (#6 (permalink)) Старый
Student2 Student2 вне форума
Member
 
Сообщений: 14
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 17.02.2007
Post 26.02.2007, 00:18

Огромное СПАСИБО!!! Щас сидел разбирался и компоновал лабы. Надеюсь завтра сдать. Очень уж хочется. Немного даже я разобрался как оно все работает. Еще раз СПАСИБО!!!
Ответить с цитированием
  (#7 (permalink)) Старый
VH VH вне форума
Member
 
Сообщений: 781
Сказал(а) спасибо: 0
Поблагодарили 11 раз(а) в 10 сообщениях
Регистрация: 29.06.2006
По умолчанию 26.02.2007, 09:13

Мое имя не VN
Ответить с цитированием
  (#8 (permalink)) Старый
Student2 Student2 вне форума
Member
 
Сообщений: 14
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 17.02.2007
Post 26.02.2007, 17:46

- БОЛЬШОЕ СПАСИБО, Я СДАЛ ЗАЧЕТ!!! БЛАГОДАРЯ ВАМ В БОЛЬШЕЙ СТЕПЕНИ.
Ответить с цитированием
Ads
Ответ

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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Определить рекурсивную функцию, возвращающую последний элемент списка gem Lisp 2 23.04.2011 13:42
Определить рекурсивную функцию, возвращающую значение суммы ряда целых четных gem Prolog 0 18.04.2011 19:52
Определить рекурсивную функцию, возвращающую последний элемент списка gem Prolog 4 18.04.2011 15:56
Определить рекурсивную функцию для циклического сдвига списка Елочка Lisp 3 11.04.2011 17:09
Как написать рекурсивную функцию Аннушка Visual Basic 0 29.12.2010 19:18
Определить рекурсивную функцию, возвращающую количество элементов kaizer131 Lisp 3 15.09.2010 00:39
Определить рекурсивную функцию, возвращающую произведение чисел repka Lisp 2 26.05.2010 10:54
Как написать рекурсивную функцию Tani91 Lisp 2 10.03.2010 00:51
Определить рекурсивную функцию, возвращающую количество определенных элементов в спис metge Lisp 1 27.10.2009 18:55
Определить рекурсивную функцию COPY imported_Zic Lisp 18 11.02.2007 11:19
Определить рекурсивную функцию COUNTG andrey-m Lisp 1 27.12.2006 17:58
Определить рекурсивную функцию Alexeika Lisp 1 21.11.2004 23:18



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