Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Вопрос на собеседовании
Покинул форум
Сообщений всего: 18
Дата рег-ции: Апр. 2011
Помог: 0 раз(а)
Добрый день,
Проходил сегодня собеседование на должность ПХП программиста, и не смог справиться с одним заданием, и теперь мой моск не может выкинуть эту задачку из головы.
Как видно тут рекурсия и очень убийственная, настолько что даже при $n=3, апачь ругаеться благим матом что нехватает места в оперативке.
Задание переделать алгоритм так чтобы она работала при q(77)
ПС Остольные вопросы были тревиальными, вывести числа до 100 что деляться на 3 и 5, переделать говнокод в ООП стиль, реализовть паттерн singelton и составить пачку мускл запросов.
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
Помог: 618 раз(а)
Akar пишет:
Как видно тут рекурсия и очень убийственная
Не видно. Переменная $n не инициализирована и при любом значении аргумента функция будет возвращать 1, проследовав по первой ветке условия. Ну и E_NOTICE генерируется, само собой.
Это уж не говоря о синтаксической ошибке, но это, видимо, опечатка.
В результате - зацикливание. В первом случае было почти тоже, только аргумент менялся
(можно было написать return q($n-1+2/7+766557-7687+q($n-$n+676))) и тд. Смысл, по моему, тот-же.
Результаты, которые выводит браузер при n>3, видимо, не есть корректными.
Возможно, я не прав.
Akar пишет:
Задание переделать алгоритм так чтобы она работала при q(77)
Изменить условие.
OrmaJever
Отправлено: 08 Апреля, 2011 - 01:00:06
Активный участник
Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010 Откуда: Чернигов
Помог: 299 раз(а)
Мелкий точно Я сидел на листке расписывал как она работает но так и не нашёл закономерности
----- Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
Akar
Отправлено: 08 Апреля, 2011 - 01:02:35
Новичок
Покинул форум
Сообщений всего: 18
Дата рег-ции: Апр. 2011
Помог: 0 раз(а)
IgVlGr пишет:
Боюсь вы не правы. Достаточно хотябы посмотреть на пост выше вашего где до $n=10 скрипт отработал.
Кстати об этом. Промелькнула мысль.
А что если не пытаться сходу отработать скрипт для 77, а начать последовательно с n-1 до n-77 записывая промежуточные значения в масив. Ведь цикл меньше ресурсоемкий процесс чем рекурсия. А от большенства рекурсий мы избавляемся.
Сейчас я на работе проверить догадку нет возможности но код постораюсь прекинть. (Добавление)
Покинул форум
Сообщений всего: 329
Дата рег-ции: Апр. 2011
Помог: 7 раз(а)
Akar пишет:
А что если не пытаться сходу отработать скрипт для 77, а начать последовательно с n-1 до n-77 записывая промежуточные значения в масив.
Ватета здравая мысль. Расписывая ручками дошел до 16, при этом все q($n) до где $n<=15 уже выписаны на бумажке. На $n=16, я к тому же пришел Все впредыдущие значения-то вычислены... Для интереса посмотрел сколько циклов эта рекурсия делает на $n=30. оказалось за 4000 зашкаливает. Всяко сохранять уже вычисленные значения быстрее будет Только как в массив затолкать пока не дотумкал.
Ваще, занимаясь этой головоломкой, пришел к мысли, что ДНК - это ни что иное, как хитроопая рекурсия. (Добавление)
Akar пишет:
Добрый день,
Проходил сегодня собеседование на должность ПХП программиста, и не смог справиться с одним заданием, и теперь мой моск не может выкинуть эту задачку из головы.
У меня моск не справляется от вопроса, а куда требуются такие php-программисты?! И прошел ли ты в итоге собеседование, Ну и сколько давалось времени на решение? (Добавление)
Akar пишет:
//Возможно чтото напутал но пишу в попыхах )[/PHP]
Рекурсию потерял Там не все так просто. Саму рекурсию менять нельзя, насколько я понимаю, т.к. результат изменится. Но мысль, имхо, правильная.
Akar
Отправлено: 08 Апреля, 2011 - 02:21:22
Новичок
Покинул форум
Сообщений всего: 18
Дата рег-ции: Апр. 2011
Помог: 0 раз(а)
Рекурсию сохранять не обязательно. Мы последовательно вычусляем все значиения от $n=1 и выше, а патом вместо вызова
q(n) смотрим уже готовый результат и подставляем конкретную цифру. Апача под рукой нет но вроде должно работать.
Вакансия была в одну международную компанию, каторая занимается предоставлением ПО для различных спортивных обозревателей (букмекерские конторы, сми и тд).
Было первое в моей жизне собеседование на должность программиста. но оно мне не показалось сложным, ну кроме последнего задания, каторое как мне кажеться я вот щас решил.
Результат неизвестен... особо не надеюсь так как еще не все хитроумные запросы в мускл сумел сделать (бд немного запутаная была и дана не в виде диаграммы, а текстом брр... ) )
ПС никому не нужен кодер работающий за еду и опыт?
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.