В ряду Фибоначчи на Java следующее число является суммой двух предыдущих чисел. Первые два числа ряда Фибоначчи — 0 и 1.
Числа Фибоначчи в значительной степени используются в вычислительном исследовании времени выполнения алгоритма для определения наибольшего общего делителя двух целых чисел. В арифметике массив Wythoff представляет собой бесконечную матрицу чисел, являющуюся результатом последовательности Фибоначчи.
The Fibonacci sequence: 0, 1, 1, 2, 3, 5, 8, 13, 21, ...
Java-код с использованием For
//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
- Для цикла перебирает
maxNumber- Показать предыдущий номер
- Вычисляет сумму предыдущего и следующего номеров
- Обновляет новые значения previousNumber и nextNumber
С использованием while
Вы также можете сгенерировать ряд Фибоначчи, используя цикл 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;
}
}
}
Логика та же, что и раньше. Вместо того, чтобы жестко задавать количество элементов, отображаемых в серии Фибоначчи, пользователю предлагается написать число.
Через рекурсию
//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():
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.
