Форум программистов, компьютерный форум, киберфорум
Наши страницы
Lisp
Войти
Регистрация
Восстановить пароль
 
Tierra
0 / 0 / 0
Регистрация: 22.03.2010
Сообщений: 17
#1

Рекурсия: дописать в конце списка суммарное количество подсписков всех уровней - Lisp

19.01.2012, 21:32. Просмотров 848. Ответов 3
Метки нет (Все метки)

Используя приёмы рекурсии в лиспе, выполнить следующие преобразования:
Получать в качестве исходного, любой многоуровневый список вида
(a b (c ( d e ) f ( g )) h ( i j ))
Составить результирующий список виду
http://www.cyberforum.ru/lisp/thread737411.html
( a b ( c ( d e ) f ( g )) h ( i j )) 4 )
тоесть дописать в конце списка суммарное количество под списков всех уровней.

Работа за "спасибо", сессия, лисп некогда учить, а программу нужно только на лиспе написать...
Кто не был студентом, тому не понять!!!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.01.2012, 21:32
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Рекурсия: дописать в конце списка суммарное количество подсписков всех уровней (Lisp):

Посчитать количество подсписков на верхнем уровне списка
Ребят, может кто знает как решить, а то я уже запуталась:(: 1)Напишите...

Определить количество подсписков, находящихся на указанном уровне заданного списка
Определить количество подсписков, находящихся на указанном уровне для...

Количество уровней списка с суммой, большей, чем заданное число
Доброго времени суток. Задача: Дан сложный список вида ((1 (2 4 3 6) 7) 9 8...

Дан список. Написать функцию, которая возвращает количество уровней сложного списка на которых есть два не числовых атома
Добрый вечер, такая вот задача Дан список ((a (2 b c 6) 7) d e ((9 f g) 12 (h...

Произведение всех лементов списка и под списков (Рекурсия)
Нужнов с помощью рекурсии найти произведение всех элементов списка и под...

3
bokunopico
306 / 261 / 5
Регистрация: 03.04.2011
Сообщений: 456
19.01.2012, 21:59 #2
Lisp
1
2
3
4
5
6
7
8
9
10
11
12
(defun f (lst)
  (labels ((count-sublists (lst)
         (if lst
         (+ (if (atom (car lst))
            0
            (1+ (count-sublists (car lst))))
            (count-sublists (cdr lst)))
         0)))
    `(,@lst ,(count-sublists lst))))
 
CL-USER> (f '(a b (c (d e) f (g)) h (i j)))
(A B (C (D E) F (G)) H (I J) 4)
1
transformator.t
defun
596 / 610 / 44
Регистрация: 30.04.2011
Сообщений: 696
19.01.2012, 22:10 #3
Lisp
1
2
3
4
5
6
7
8
(defun f (l)
           (labels ((fun (l)
                      (if (null l) 0
                          (if (consp (car l))
                              (+ (1+ (fun (car l)))
                                 (fun (cdr l)))
                              (fun (cdr l))))))
             (nconc l (list (fun l)))))
1
Tierra
0 / 0 / 0
Регистрация: 22.03.2010
Сообщений: 17
19.01.2012, 22:14  [ТС] #4
Спасибо огромное ))
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.01.2012, 22:14
Привет! Вот еще темы с решениями:

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

Удаление из списка четных атомов (с учетом подсписков)
Опишите функцию, удаляющую из списка четные атомы (с учетом подсписков). К...

Вывести список сумм подсписков заданного списка
Требуется написать функцию, выводящую список сумм подсписков заданного списка....

Вычислить сумму числовых элементов списка, учитывая элементы подсписков
Доброго времени суток! Задача состоит в следующем: Вычислить сумму числовых...


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

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

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