Что такое серия Фибоначчи?
В ряду Фибоначчи следующее число является суммой двух предыдущих чисел. Первые два числа ряда Фибоначчи — 0 и 1.
Числа Фибоначчи в значительной степени используются в вычислительном исследовании времени выполнения алгоритма для определения наибольшего общего делителя двух целых чисел. В арифметике массив Wythoff представляет собой бесконечную матрицу чисел, являющуюся результатом последовательности Фибоначчи.
The Fibonacci sequence: 0, 1, 1, 2, 3, 5, 8, 13, 21, ...
Java-код с использованием For Loop
- //Using For Loop
- public class FibonacciExample {
- public static void main(String[] args)
- {
- // Set it to the number of elements you want in the Fibonacci Series
- int maxNumber = 10;
- int previousNumber = 0;
- int nextNumber = 1;
- System.out.print("Fibonacci Series of "+maxNumber+" numbers:");
- for (int i = 1; i <= maxNumber; ++i)
- {
- System.out.print(previousNumber+" ");
- /* On each iteration, we are assigning second number
- * to the first number and assigning the sum of last two
- * numbers to the second number
- */
- int sum = previousNumber + nextNumber;
- previousNumber = nextNumber;
- nextNumber = sum;
- }
- }
- }
Вывод:
Fibonacci Series of 10 numbers:0 1 1 2 3 5 8 13 21 34
Логика программы:
- previousNumber инициализируется до 0, а nextNumber инициализируется до 1
- Ибо Loop перебирает
maxNumber
- Показать предыдущий номер
- Вычисляет сумму предыдущего и следующего номеров
- Обновляет новые значения previousNumber и nextNumber
Java-код с использованием while Loop
Вы также можете генерировать серии Фибоначчи, используя While
цикл в Java.
- //Using While Loop
- public class FibonacciWhileExample {
- public static void main(String[] args)
- {
- int maxNumber = 10, previousNumber = 0, nextNumber = 1;
- System.out.print("Fibonacci Series of "+maxNumber+" numbers:");
- int i=1;
- while(i <= maxNumber)
- {
- System.out.print(previousNumber+" ");
- int sum = previousNumber + nextNumber;
- previousNumber = nextNumber;
- nextNumber = sum;
- i++;
- }
- }
- }
Вывод:
Fibonacci Series of 10 numbers:0 1 1 2 3 5 8 13 21 34
Единственное отличие в логике программы — использование цикла WHILE для вывода чисел Фибоначчи.
Ряд Фибоначчи, основанный на пользовательском вводе
- //fibonacci series based on the user input
- import java.util.Scanner;
- public class FibonacciExample {
- public static void main(String[] args)
- {
- int maxNumber = 0;
- int previousNumber = 0;
- int nextNumber = 1;
- System.out.println("How many numbers you want in Fibonacci:");
- Scanner scanner = new Scanner(System.in);
- maxNumber = scanner.nextInt();
- System.out.print("Fibonacci Series of "+maxNumber+" numbers:");
- for (int i = 1; i <= maxNumber; ++i)
- {
- System.out.print(previousNumber+" ");
- /* On each iteration, we are assigning second number
- * to the first number and assigning the sum of last two
- * numbers to the second number
- */
- int sum = previousNumber + nextNumber;
- previousNumber = nextNumber;
- nextNumber = sum;
- }
- }
- }
Логика программы:
Логика та же, что и раньше. Вместо того, чтобы жестко задавать количество элементов, отображаемых в серии Фибоначчи, пользователю предлагается написать число.
Java-код с использованием рекурсии
- //Using Recursion
- public class FibonacciCalc{
- public static int fibonacciRecursion(int n){
- if(n == 0){
- return 0;
- }
- if(n == 1 || n == 2){
- return 1;
- }
- return fibonacciRecursion(n-2) + fibonacciRecursion(n-1);
- }
- public static void main(String args[]) {
- int maxNumber = 10;
- System.out.print("Fibonacci Series of "+maxNumber+" numbers: ");
- for(int i = 0; i < maxNumber; i++){
- System.out.print(fibonacciRecursion(i) +" ");
- }
- }
- }
Вывод:
Fibonacci Series of 10 numbers: 0 1 1 2 3 5 8 13 21 34
Логика программы:
Рекурсивная функция — это функция, которая может вызывать себя сама.
fibonacciRecursion ():
- Принимает входной номер. Проверяет 0, 1, 2 и возвращает 0, 1, 1 соответственно, потому что последовательность Фибоначчи начинается с 0, 1, 1.
- Когда вход n равен> = 3, функция будет вызывать себя рекурсивно. Звонок делается два раза. Давайте посмотрим пример для ввода 4.
fibonacciRecursion (4) It will recursively call fibonacciRecursion function for values 2 and 3 fibonacciRecursion (2) \\ call for value 0 and 1 fibonacciRecursion (0) = 0 fibonacciRecursion (1) = 1 fibonacciRecursion (3) \\ It will call for 1 and 2 fibonacciRecursion (1) = 1 fibonacciRecursion (2) \\ It will call for 0 and 1 fibonacciRecursion (0) = 0 fibonacciRecursion (1) = 1
Теперь результат добавлен 0 + 1 + 1 + 0 + 1 = 3