Форум программистов, компьютерный форум, киберфорум
Lisp
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 26.04.2016
Сообщений: 15
1

Рекурсия

20.04.2017, 21:34. Показов 1156. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Есть список элементов. Найти среднее значение элементов списка, разбить на 2 части слева меньшие среднего значения, справа большие среднего значения.
Вот список: (1 2 3 4 5).
Вот так должен выглядеть ответ: ((1 2) 3 (4 5).
Помогите пожалуйста))
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.04.2017, 21:34
Ответы с готовыми решениями:

Рекурсия
Начал изучать Lisp относительно недавно, поэтому извиняюсь, если вопрос глупый. В общем, у меня...

рекурсия
Прочитать из стандартного потока ввода двоичное дерево, представленное с помощью списков. Первый...

Рекурсия
Общее задание: Составить рекурсивную функцию для обработки списка из любого количества атомов,...

рекурсия
Помогите. на Лисп описать функцию одного аргумента L, которая принимает значение T, если условие...

2
Модератор
Эксперт функциональных языков программирования
3051 / 2193 / 459
Регистрация: 26.03.2015
Сообщений: 8,470
20.04.2017, 22:40 2
Цитата Сообщение от DENIS228 Посмотреть сообщение
Найти среднее значение элементов списка
Что значит "среднее"?
Медиану? Тогда что делать, если чётное число элементов в списке?

Добавлено через 7 минут
Что возвращать для списка (1 1 1 1 1 2) ?
0
4699 / 4394 / 380
Регистрация: 12.05.2012
Сообщений: 3,096
20.04.2017, 23:16 3
вариант без рекурсии:
Lisp
1
2
3
4
5
6
7
8
(defun balance (w &aux (m (/ (reduce #'+ w) (length w))))
  (loop for a in w 
        if (< a m) collect a into b
        else if (> a m) collect a into c
        finally (return (list b m c))))
 
> (balance '(1 2 3 4 5))
((1 2) 3 (4 5))
Добавлено через 10 минут
рекурсия:
Lisp
1
2
3
4
5
6
7
8
(defun balance (w &optional b (m (/ (reduce #'+ w) (length w))) c)
  (cond ((null w) (list (reverse b) m (reverse c)))
        ((< (car w) m) (balance (cdr w) (cons (car w) b) m c))
        ((> (car w) m) (balance (cdr w) b m (cons (car w) c)))
        (t (balance (cdr w) b m c))))
 
> (balance '(1 2 3 4 5))
((1 2) 3 (4 5))
Добавлено через 1 минуту
Lisp
1
2
3
4
5
6
7
8
9
10
(defun balance (w &optional b (m (/ (reduce #'+ w) (length w))) c)
  (cond ((null w) (list (sort b #'<) m (sort c #'<)))
        ((< (car w) m) (balance (cdr w) (cons (car w) b) m c))
        ((> (car w) m) (balance (cdr w) b m (cons (car w) c)))
        (t (balance (cdr w) b m c))))
 
> (balance '(1 2 3 4 5))
((1 2) 3 (4 5))
> (balance '(2 5 3 1 4))
((1 2) 3 (4 5))
Добавлено через 1 минуту
Lisp
1
2
> (balance '(1 1 1 1 1 2))
((1 1 1 1 1) 7/6 (2))
0
20.04.2017, 23:16
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.04.2017, 23:16
Помогаю со студенческими работами здесь

Рекурсия
Привести пример задачи из реальной предметной области, которую можно решить с помощью механизма...

Рекурсия
Помогите пожалуйста с заданием: Связать базу данных (потомок, родители) с глобальной переменной...

Рекурсия. Лисп
Добрый день! Есть такая задача Дан список (a b c d). Необходимо преобразовать его в список (a (b)...

Функции Рекурсия
Помогите, пожалуйста, с рекурсивной функцией, никак врубиться не могу. Написать функцию,...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru