- Оригинальный адрес:Even Fibonacci numbers (Python vs. JavaScript)
- Оригинальный автор:Ethan Jarrell
- Перевод с:Программа перевода самородков
- Постоянная ссылка на эту статью:GitHub.com/rare earth/gold-no…
- Переводчик:zephyrJS
- Корректор:hexianga, Starriers
Четные числа в последовательности Фибоначчи (Python против JavaScript)
Генерация последовательности Фибоначчи — популярный вопрос на собеседовании среди работодателей. Нахождение всех четных чисел в последовательности Фибоначчи — один из ее популярных вариантов. Здесь я сделаю это как на Python, так и на JavaScript. Чтобы упростить задачу, мы будем генерировать только четные числа в последовательности до 4 000 000 и суммировать их.
Что такое последовательность Фибоначчи?
Каждый новый член последовательности Фибоначчи равен сумме двух предыдущих членов. Итак, мы можем увидеть пример, где, начиная с 1 и 2, первые 10 чисел в последовательности:
1, 2, 3, 5, 8, 13, 21, 34, 55, 89
Как бы мы сгенерировали все числа в последовательности?
Во-первых, мы можем подумать о том, как сгенерировать последовательность примерно так:
Проблема здесь в том, что мы не можем создать переменную для каждого числа, поэтому лучшим решением было бы переназначать эти три переменные каждый раз, когда мы вызываем a + b = c. Итак, теперь мы присваиваем последнее значение b переменной a, последнее значение c переменной b и так далее. Это будет выглядеть так:
Итак, первоначальная идея состоит в том, что в каком-то цикле мы проверяем, не достигли ли мы критической точки 4 000 000, затем сбрасываем значения a, b и c, а затем сохраняем c в массив или список. Наконец, мы суммируем этот массив или список.
На этом обсуждение псевдокода завершено, давайте покажем пример кода, посмотрим, как он будет выглядеть:
Python:
Начнем с псевдокода. Я присваиваю пустой массив переменной 'x'.
x = []
a = 1
b = 2
c = a + b
Далее я воспользуюсь циклом while Python, чтобы проверить и убедиться,c
значение меньше, чем4000000
.
while c < 4000000:
a = b
b = c
c = a + b
if c % 2 == 0:
x.insert(0, c)
Поскольку нам нужны только четные числа, внутри цикла while мы проверим, чтобы убедиться, что это четное число, прежде чем выполнять вставку вx.
операция. Далее мы суммируем числа в этом списке в Python и печатаем значение.
numSum = (sum(x))
print numSum
JavaScript:
Я хотел бы решить это с помощью JavaScript, но он будет немного отличаться от Python. Сначала я бы создал пустой массив, а затем присвоил значения первым двум индексам массива:
var fib = [];
fib[0] = 1;
fib[1] = 2;
Далее я буду перебирать массив. Выберите индексы, которые мне нужны для создания последовательности Фибоначчи. В предыдущем примере мы сбрасываем значения a, b и c каждый раз через цикл. Но в этой версии мы не будем сбрасывать ни одно из значений, вместо этого я назначу f[i-2] + f[i-1] для f[i], а затем назначу f[i] в массив .
for(i=2; i<=50; i++) {
fib[i] = fib[i-2] + fib[i-1];
fib.push(fib[i]);
}
На данный момент у меня есть полная последовательность Фибоначчи, но не только четная последовательность, поэтому я буду использовать второй цикл, чтобы получить массивы с менее чем 4 000 000 и все четные числа в них.
arrUnder4mil = [];
for (var i = 0; i < fib.length; i++) {
if (fib[i] <= 4000000 && fib[i] %2 == 0) {
arrUnder4mil.push(fib[i]);
}
}
Наконец, я суммирую числа в массиве и печатаю результат.
let fibSum = arrUnder4mil.reduce((a, b) => a + b, 0);
console.log(fibSum);
Суммировать:
Несмотря на то, что наш код JavaScript немного тяжеловат, оба метода решают эту проблему за несколько миллисекунд. Я думаю, что для этих технических собеседований есть два разных способа или языка, которые помогают работодателям узнать, насколько вы всесторонне развиты и креативны. Но самое главное, это демонстрирует вашу способность логически мыслить. Пожалуйста, свяжитесь со мной, если у вас есть какие-либо отзывы. Спасибо!
Программа перевода самородковэто сообщество, которое переводит высококачественные технические статьи из Интернета сНаггетсДелитесь статьями на английском языке на . Охват контентаAndroid,iOS,внешний интерфейс,задняя часть,блокчейн,продукт,дизайн,искусственный интеллектЕсли вы хотите видеть более качественные переводы, пожалуйста, продолжайте обращать вниманиеПрограмма перевода самородков,официальный Вейбо,Знай колонку.