Форум программистов, компьютерный форум, киберфорум
Наши страницы
Lisp
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
АлинаТ
0 / 0 / 0
Регистрация: 18.11.2012
Сообщений: 3
1

Разработать рекурсивный вариант программы в функциональном стиле

18.11.2012, 13:01. Просмотров 688. Ответов 1
Метки нет (Все метки)

1) Разработать рекурсивный вариант программы в функциональном стиле для решения предложенной задачи.

Формировать список, состоящий из не более чем N элементов исходного списка >(name 3 ‘(a 55 g 6 u))
(a 55 g)


2) . Разработать итерационный вариант программы в императивном стиле для решения предложенной задачи.
В теле функций можно использовать только примитивы car, cdr, cons. Все остальные функции должны быть определены через эти примитивы.


Формировать список, состоящий из не более чем N элементов исходного списка >(name 3 ‘(a 55 g 6 u))
(a 55 g)
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.11.2012, 13:01
Ответы с готовыми решениями:

Программа, объединяющая множества, в функциональном стиле
Добрый вечер! Требуется переделать программу, объединяющую два множества l1 и l2, в функциональный...

C++ в функциональном стиле: как писать в стиле C#/LINQ (без дополнительных библиотек)?
Как писать в стиле C#/LINQ (без дополнительных библиотек)? Вот, допустим, есть простейшая задача:...

Как написать правильно (в функциональном стиле)
val in = new Scanner(System.in) val s = in.nextLine() var arr=new Array(s.length()+5) ...

Не рекурсивный вариант сортировки пм
Сама задача: Получить сумму двух длинных натуральных чисел Каждое число и результат представлены...

сортировка не рекурсивный вариант если можно. с++
Сама задача: Получить сумму двух длинных натуральных чисел Каждое число и результат представлены...

1
Catstail
Модератор
24738 / 12542 / 2288
Регистрация: 12.02.2012
Сообщений: 20,393
18.11.2012, 14:00 2
Цитата Сообщение от АлинаТ Посмотреть сообщение
В теле функций можно использовать только примитивы car, cdr, cons.
- скажи преподавателю, что без COND (или IF,WHEN...) такие программы не пишутся.

Вот рекурсивное решение:

Lisp
1
2
3
4
5
6
7
8
9
10
11
(defun get-n-el (n lst)
    (cond ((null lst) Nil)
             ((= n 0) Nil)
             (t (cons (car lst) (get-n-el (- n 1) (cdr lst))))))  
 
 
==> get-n-el
 
(get-n-el 3 '(a 55 g 6 u))
 
==> (a 55 g)
Вот императивное решение:

Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
(defun get-n-el-i (n lst)
  (prog (res)
 @1  (cond ((= n 0)   (return res))
           ((null lst)(return res)))
     (setq res (append! res (list (car lst))))
     (setq n (- n 1))
     (setq lst (cdr lst))
     (go @1)   
  ))
 
 
==> get-n-el-i
 
(get-n-el-i 3 '(a 55 g 6 u))
 
==> (a 55 g)
 
(get-n-el-i 4 '(a 55 g 6 u))
 
==> (a 55 g 6)
 
(get-n-el-i 14 '(a 55 g 6 u))
 
==> (a 55 g 6 u)
Функция append! выражается через cons, cond, car и cdr:

Lisp
1
2
3
4
5
6
7
8
9
10
11
(defun append! (x y)
  (cond ((null x) y)
        ((null y) x)
        (t (cons (car x) (append! (cdr x) y)))))
 
 
==> append!
 
(append! '(1 2 3) '(4 5 6))
 
==> (1 2 3 4 5 6)
0
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.11.2012, 14:00

Как бы вы написали кусок программы, Вариант 1 или Вариант 2?
Как бы вы написали кусок программы Вариант 1 или Вариант 2 ? Вариант 1. double Value0 = value0...

Разработать рекурсивный алгоритм: f(n)=1/(n+5)!
Напишите плизз весь код программки и модуля)) Разработать рекурсивный алгоритм и программу...

Разработать рекурсивный метод
Разработать рекурсивный метод возвращающий значение, нужно найти n-ный член данной...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru