Найти тему
Дневник Джуна

Изучаем программирование. День 31. Самое частое задание на собеседованиях.

Здравствуйте!

Вчера мы с вами говорили о REST, API и Django REST framework. Сегодня поговорим о самом частом задании на собеседованиях на позицию программиста — вычисление ряда Фибоначчи длинной в n.

-2

Для тех, кто не знает, ряд Фибоначчи это

элементы числовой последовательности, в которой первые два числа равны либо 1 и 1, либо 0 и 1, а каждое последующее число равно сумме двух предыдущих чисел

Спасибо, Википедия.

На собеседовании интервьюер просит вас составить такую функцию, которая бы при её вызове, например fib(n), возвращала бы ряд Фибоначчи из n чисел. Как же справиться с этой задачей?

Вот её решение:

-3

Чтобы не просто копировать её и заучивать, давайте разберёмся как она работает:

В первой строке мы определяем функцию, которая принимает один аргумент(число), во второй строке заводим пустой список, чтобы складывать в него результаты наших вычислений(ряд Фибоначчи). В третьей строке задаём значения двум переменным а = 0, b = 1, где "а" будет обозначать число ряда Фибоначчи, а "b" —сумму "а" и следующего за ним числа.

Итак, в строке с номером 4 мы определяем цикл while, который будет работать до тех пор, пока "n", которое дано, как аргумент фунции не будет равно нулю. После чего в 5-й строке мы "складываем" наше первое число ряда Фибоначчи в наш список result, так как первым у нас будет 0. В 6-й строке наше число n, которое мы передали функции в виде аргумента, становится меньше на 1, так как 1 элемент в 5-й строке мы уже в список result положили. В 7-й строке, "a" у нас становится равно "b", то есть следующему числу в ряде Фибоначчи, а "b" будет равно сумме "a" и "b", в нашем случае 1, то есть следующему числу после "а" в ряде Фибоначчи. Таким образом цикл повторяется до n != 0, а мы получаем наш ряд Фибоначчи из n чисел в 8 строке по окончании цикла.

Вуаля! Задача решена.

Но бывает, что рекрутёры могут усложнить задачу и попросят вас составить функцию, где будут только чётные числа ряда Фибоначчи, либо нечетные. Легче лёгкого, мы делаем следующее:

-4

В случае чётных чисел. И следующее:

-5

В случае нечётных чисел.

Что изменилось, по сравнению с первым вариантом?

Правильно, мы перед тем как "сложить" "а" в результирующий список, проводим его деление по модулю, и если остаток от деления есть, то собираем нечётные числа, а если нет — чётные.

Зачем всё это? Ведь это всё есть в интернете. Ну, во-первых, в интернете есть вообще всё, а, во-вторых, и в главных — когда вы находите где-то решение своей задачи, не просто "ctrl-c" и "ctrl-v", а разбирайтесь, как в этом решении всё устроено. В противном случае, найденное решение не принесёт вам пользы, вы просто спишете его, как хулиган у отличника в школе, и толку для хулигана в этом нет никакого.

До завтра и приятного вам обучения. Завтра скорее всего поговорим о том, как лучше учить английский язык, если вы его совсем не знаете.

Если понравилась сегодняшняя статья, поставьте, пожалуйста, лайк, а если вы ещё не с нами, подпишитесь на канал, чтобы ничего не пропустить.

Предыдущая статья. ................................................................... Следующая статья.

-6