Тема: Рекурсия
Показать сообщение отдельно
  #3  
Старый 18.12.2011, 21:30
gerych gerych вне форума
Прохожий
 
Регистрация: 06.12.2011
Сообщения: 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от Bargest
Во-первых, можно обойтись и без рекурсии простым циклом без особого усложнения кода. Например, пройтись по массиву от последнего элемента к первому и обработать каждый стринглист.
Во-вторых, есть метод TThread.Suspend для паузы. Хотя лучше конечно поток не на паузу поставить, а поставить ему флажок и подождать, а сам поток периодически проверяет флаг, и если его поставили - прекращает сортировку и вырубается, сохранив где-нибудь номер, где остановился.
Ну а сохранение в файл - проходишь по всем стринглистам, сейвишь их, потом сохраняешь номер текущего обрабатываемого. С циклом это будет сделать в пару сотен раз проще, чем с рекурсией. Потому что для рекурсии придется еще сохранять состояние стека этого потока и адрес команды, и соответственно загружать.
Спасибо. С флажком все предельно понятно но вот на счет цикла...(( Как вы заметили массив динамический и его длина зависит от выполнения программы и может быть как 3 так и 100. Думаю стоит ли объявлять массив для 100 элементов??? А если в рантайме понадобится 101? Хотелось бы разобраться именно с рекруссией(полезно будет и по глубже узнать структуру языка). Но к сожалению о стэке я и понятия не имею. Где можно об этом почитать не подскажете?
Ответить с цитированием