Внимание! Этот топик устарел. Пожалуйста, создайте новый топик, чтобы задать интересующий Вас вопрос.
| Автор | Сообщение |
| Ноя, 2007 Сообщений: 4 | Jul url://forum.message:2198 Рекурсия в Лиспе Подскажите пожалуйста, как правильно сформулировать принцип решения задачи. Дан список (1 2 3 4 5 6 7 8 9 10 ...) Преобразовать в ((1)(2 3)(4 5 6)(7 8)(9)(10 11)(12 13 14)...) Заранее спасибо. |
| |
Июл, 2004 Сообщений: 1078 | popoff url://forum.message:2199 ________________________________ Если не будет деревьев — нам нечем будет дышать, если вода загрязнится — нам нечего будет пить. |
| |
| Ноя, 2007 Сообщений: 4 | Jul url://forum.message:2200 В смысле связь? Надо из одноуровневого списка сделать двухуровневый ((1) (2 3) (4 5 6) (7 8)...) используя рекурсию, сгруппировав четко соблюдая заданную последовательность. |
| |
Июл, 2004 Сообщений: 1078 | popoff url://forum.message:2201 какая последовательность - заданная? ________________________________ Если не будет деревьев — нам нечем будет дышать, если вода загрязнится — нам нечего будет пить. |
| |
| Ноя, 2007 Сообщений: 4 | Jul url://forum.message:2202 То есть в списке должно быть по 1,2,3,2,1,2,3,2...элементов в подсписках |
| |
Июл, 2004 Сообщений: 1078 | popoff url://forum.message:2203 Ну, тут много разных вариантов. Например, можно сделать 4 функции: 1-я будет добавлять в результат один текущий элемент списка и вызывать вторую 2-я будет добавлять два первых элемента и вызывать третью 3-я будет добавлять три и вызывать 4-ю 4-я будет добавлять два и вызывать первую Естественно, во всех функциях условие завершение рекурсии, проверка на наличие достаточного числа элементов в исходном списке и т.п. Можно сделать две функции. Первая (не рекурсивная) будет брать на вход список и первые 8 элементов списка вставлять по правилу 1-2-3-2, естественно, с проверкой на наличие достаточного числа элементов. А вторая (рекурсивная) функция будет будет вызывать на каждом шаге эту первую функцию и вглубь передавать исходный список, удаляя из него первые 8 элементов. Можно дополнительные аргументы там передавать, которые указывали бы на количество элементов всписке и как-то эти аргументы менять при переходе вглубь рекурсии. ________________________________ Если не будет деревьев — нам нечем будет дышать, если вода загрязнится — нам нечего будет пить. |
| |
 | Ноя, 2007 Сообщений: 4 | Jul url://forum.message:2208 Спасибо за варианты. Я останавливаюсь на 2-м, наверное будет наиболее подходящий. По не рекурсивной,я думаю должно быть примерно так: 1. проверка на пустой список 2. условие (cond) делать через цикл перебирать до 8 элемента,а вот правило 1-2-3-2 я не могу придумать, и если можно примерно этот фрагмент на лиспе. |
 | |
Внимание! Этот топик устарел. Пожалуйста, создайте новый топик, чтобы задать интересующий Вас вопрос.