| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > LISP > Рекурсивная обработка списков |
| Автор: Sensitive 25.12.2009, 19:10 | ||||
| Здравствуйте! Задание следующее у меня: Используя приемы рекурсии в Лиспе, выполнить преобразования: получая в качестве исходного любой многоуровневый список вида ( a b ( c d e ( f ) g (h i ) j k ) l m n ) образовать результирующий список вида ( a b ( c d e ( f 3 ) g ( h i 3 ) j k 2 ) l m n 1 ), тоесть, в строке и в каждом подсписке, перед закрывающей скобкой следует дописать в дополнительной позиции значение уровня закрываемого списка или подсписка. Видела на Вашем же форуме предложенный вариант решения:
Но проблема вся в том, что у меня по заданию нельзя использовать "дополнительный параметр" "&optional (level 1)". Вот то, что я пробую (пока поставить нумерацию хотя бы в начале каждого подсписка, в конец потом перенести не проблема):
Подскажите, как нужно сделать, чтоб во всех уровнях проставилась нумерация, у меня в первом только и всё.... |
| Автор: VH_ 25.12.2009, 22:19 | ||||
| Добрый вечер. Если нельзя «дополнительный <на самом деле необязательный> параметр», сделайте его обязательным - должна же функция откуда-нибудь все-таки узнать номер верхнего уровня:
(listlevel '(a b (c d e (f) g (h I) j) k (l) m n) 1) либо сделайте функцию-обертку :
(F '(a b (c d e (f) g (h I) j) k (l) m n)) |
| Автор: Sensitive 29.12.2009, 17:48 |
| Спасибо большое. Функция-обертка это то, что нужно. |