В данной задаче продолжаем знакомиться с языком java, для чего реализуем пользовательский ввод, а также установим и запустим программу на удаленном сервере. Как всегда, для проверки вычислений сделан небольшой онлайн-калькулятор и приведен правильный ответ на задачу.
Каждый следующий элемент ряда Фибоначчи получается при
сложении двух предыдущих. Начиная с 1 и 2, первые
10 элементов будут:
1, 2, 3, 5, 8, 13, 21,
34, 55, 89...
Найдите сумму всех четных элементов ряда
Фибоначчи, которые не превышают четыре миллиона.
import java.util.Scanner;
public class Solution {
public static void main(String[] args) {
int firstFib = 1;
int secondFib = 2;
int nextFib = 3; // 1 + 2
int answer = 0;
Scanner input = new Scanner(System.in);
System.out.print("Input max value: ");
int max = input.nextInt();
while (nextFib < max) {
if (secondFib % 2 == 0) {
answer += secondFib;
}
nextFib = firstFib + secondFib;
firstFib = secondFib;
secondFib = nextFib;
}
System.out.println("Answer is " + answer);
input.close();
}
}
Во-первых, нужно помнить, что согласно заданию и самому определению чисел Фибоначчи: “следующий элемент получается при сложении двух предыдущих”.
Во-вторых, четное число делится на 2 без остатка.
Ну и главное, не нужно вычислять каждый элемент ряда каждый раз заново. Потому, как только будет получено число Фибоначчи, следующее за первыми двумя.
...значения обновляются:
...первое число принимает значение второго:
...второе – третьего (суммы первых двух).
Такой цикл
продолжается снова и снова до тех пор, пока в итоге не дойдет до
искомых 4000000.
Постепенно приближаем сложность задачи к реальной - отработаю
запуск программы на удаленном сервере.
Арендую vps
сервер на время (гайд внизу).
...подключаюсь к нему...
...и напишу текст программы во встроенном текстовом редакторе(vim,
nano, лично я пользуюсь neovim).
Краткий список
команд ниже.
Небольшой гайд по установке java на сервер:
Скомпилирую программу...
Вопросы компиляции java были подробно описаны в статье.
Запуск программы, ввод максимального числа, до которого следует производить поиск и выведется искомый ответ
$ java Solution Input max value Fibonacci sequence term: 4000000 Answer is 4613732
В данной программе применили несколько новых конструкций языка java: