Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > LISP > мини рекурсия |
Автор: Lion69 2.10.2009, 17:25 | ||
нужно сделать через рекурсию использую базовые ф-ции такую вещь из (a b c d ) на входе должно получится ((((a)b)c)d) на выходе.... я сделал такое
но оно выдает список наоборот... > (fak '(5 2 4 86 1 2 )) ((((((2) 1) 86) 4) 2) 5) мне не нужна прям готовая ф-я.. мне нужна подсказка..... как делать и самое главно с чего начать... |
Автор: Ryukzak 2.10.2009, 20:12 |
Рекурсия позволяет собирать структуры от внутренних к внешним. Так что придётся либо развернуть список, либо реализовать его хвостовой рекурсией. |
Автор: Lion69 2.10.2009, 20:16 | ||||
как развернуть список я не знаю... это всмысле реверс или как? в таком случае как его сделать в рекурсии...?
я думал это и есть хвостовая рекурчия....... ЗЫ.. я меньше месяча лисп учу... так что извеняйте за может быть глупые вопросы Добавлено через 5 минут и 3 секунды я кстате над этой прогой уже второй день бьюсь... хотел бы уже начать что то еще делать ... но не могу..... дошло до того что аж сюда на форум обратился..... не могу понять что тут делать.... |
Автор: Void 2.10.2009, 20:35 | ||||
Стандартный приём функционального программирования — протаскивать через цепочку рекурсивных вызовов значение-аккумулятор.
Как обернуть эту функцию, чтобы список был единственным параметром, думаю, понятно. |
Автор: Lion69 2.10.2009, 20:51 |
Void, извини но не понятно.....как сделать это для одного списка? типа (a b c d)??? и еще мне я не знаю что такое IF.... это типа такая запись терминальной ветви.....?(я ведь говорил что новичок...) если не сложно то помоги... а то что то по истечиние двух дней игр с этой задачей что то вообще соображать перестал... |
Автор: Void 2.10.2009, 21:18 | ||||
Сделать из головы (car) список из одного элемента и передать как первый параметр (аккумулятор), хвост передать как второй.
Для порядка можно функции сделать вложенными:
Но на данном этапе, наверное, не стоит заморачиваться. Условный оператор, однако. (if условие если-истина если-ложь). |
Автор: Lion69 3.10.2009, 00:14 |
Void, спасибо... правда я плохо понимаю как оно дейтвует... все таки я привык к терминальной ветви а за ней должна идти сама рекурсия... ну ладно это такое.... еще раз спасибо.... да... нащет ифа... я просто не понил что этот условний оператор делает... имено в этом примере... а не вообще... не нужно меня причислять к слабоумным...))) |
Автор: Lion69 3.10.2009, 12:06 |
![]() |
Автор: _sg 25.4.2014, 10:00 | ||
как вариант:
|