Вообще такие примеры использования рекурсии как раз и приводят к неверному ее пониманию другими. Все, что можно просто реализовать через циклы, должно быть реализовано через циклы. Оставьте рекурсии задачи обхода дерева или синтаксического анализа, а факториал — через for (int i = 1; i <= n; i++) {}
Я бы даже сказал не статья, а заметка. Задумывалось как небольшой «tip» — типа «а вы знаете что...». Просто в свое время для меня было это не очевидно — пришлось копаться в исходниках немного.
В одной из ранних заметок вы упоминали С. Может быть действительно лучше разрабатывать такую платформу на более платформонезависимом (сорри за тавтологию) языке?
Есть шаред хостинг за 10$, все рюшечки имеются — вплоть до SSH. Есть VDS за 20-30$ или около того (64 оперативки, 400 проц) от ПервыхВДС. И есть веб-приложение на Zend Framework. На шареде летает. На VDS — 3-4 сек генерация страницы. Чтобы на ВДС тоже работало нормально, нужно купить далеко не за 20-30$ сервер.
Я не говорю про нагрузки от большого количества посетителей — это отдельная тема.
ИМХО, проблема немного надумана. Первый пример с мультикурлом — ждем выполнения _всех_ загрузок, только потом их обрабатываем. Почему бы не обрабатывать каждую ленту сразу после ее загрузки? Т.е. поставили на загрузку 10, одна из них загрузилась, еще девять грузятся. В это время мы вполне ее успеем распарсить и сложить как надо в базу. Очень редко у меня многопоточный граббер упирался в своей роизводительности в роцессор и mySQL — как правило именно загрузка контента является самым узким местом. Ну так давайте параллелить только ее? Благо мультикурл прекрасно справляется с такой задачей.
Отписался тут
Советовали взять предыдущую версию starter_package. Посмотрел, чем они отличаются:
Старая версия дает боту такие данные:
P 11.6135908004 11.6587374197 0 119 0
Новая такие:
P 11,613591 11,658737 0 119 0
Вот из-за запятой в координатах, программа и рушится почему-то (PlanetWars.java: 255):
Заменил на
Перекомпилировал ботов — все заработало. Грешу на настройки локали какие-нибудь. Не уверен, что такой хак заработает на тестовом сервере.
0! = 1;
N! = N * (N-1)!
Я не говорю про нагрузки от большого количества посетителей — это отдельная тема.