Здравствуйте, _hum_, Вы писали:
__>Здравствуйте, LaptevVV, Вы писали:
__> на с++ рекурсивный подход использовать мало того, что сомнительно по эффективности,
в принципе рекурсия при fastcall может быть эффективнее выделения памяти на куче и обгоняет многие алгоритмы с ветвлением которое проц не может предсказать. но никакой гарантии нет. если понимать что у компилятора под капотом то можно получить выигрыш по скорости, применив рекурсию. но если не понимать, то можно очень сильно проиграть
__> так еще и небезопасно по переполнению стека. вот вы знаете, как удостовериться, что размера стека хватит?
это да. стека мало, причем непредсказуемо мало. на разных платформах его разное кол-во и по современным меркам зачастую ничтожное. даже если нам известно сколько стека выделяет ось нашему потоку, то в общем случае нам неизвестно сколько скушали остальные функции на момент вызова нашей. если рекурсивная функция А вызывает рекурсивную функцию Б, то мне становится страшно.
__>я к тому веду, что такие вещи естественнее изучать на соответствующих языках
+1
есть куча языков где рекурсия кушает не стек, а кучу. хотя накладные расходы на вызов функции в общем случае неизвестны. даже если это рекурсивный обход каталогов, то очень может быть что накладные расходы скушают всю кучу...
americans fought a war for a freedom. another one to end slavery. so, what do some of them choose to do with their freedom? become slaves.