Четные числа в последовательности Фибоначчи (Python против JavaScript)

Python внешний интерфейс JavaScript Программа перевода самородков

Четные числа в последовательности Фибоначчи (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,внешний интерфейс,задняя часть,блокчейн,продукт,дизайн,искусственный интеллектЕсли вы хотите видеть более качественные переводы, пожалуйста, продолжайте обращать вниманиеПрограмма перевода самородков,официальный Вейбо,Знай колонку.