Генерация последовательности Фибоначчи в Java: примеры for, while и рекурсии
Что такое ряд Фибоначчи в Java?
Ряд Фибоначчи — последовательность, где каждое число равно сумме двух предыдущих. В Java ряд традиционно начинается с 0 и 1:
0, 1, 1, 2, 3, 5, 8, 13, 21, …
Помимо математического интереса, последовательность Фибоначчи часто используется в анализе алгоритмов — например, для оценки времени рекурсивных процедур и вычисления наибольшего общего делителя.
- Реализация через for-цикл
- Реализация через while-цикл
- Рекурсивная реализация
- Интерактивный пример с вводом пользователя
Ряд Фибоначчи с использованием for-цикла
// Using a for loop
public class FibonacciExample {
public static void main(String[] args) {
int maxNumber = 10; // Количество членов
int previous = 0;
int current = 1;
System.out.print("Fibonacci Series of " + maxNumber + " numbers:");
for (int i = 1; i <= maxNumber; i++) {
System.out.print(previous + " ");
int next = previous + current;
previous = current;
current = next;
}
}
}
Вывод:
Fibonacci Series of 10 numbers:0 1 1 2 3 5 8 13 21 34
Логика:
- Инициализируем
previous = 0иcurrent = 1. - Цикл
maxNumberраз, печатаемpreviousи обновляем значения.
Ряд Фибоначчи с использованием while-цикла
// Using a while loop
public class FibonacciWhileExample {
public static void main(String[] args) {
int maxNumber = 10;
int previous = 0;
int current = 1;
System.out.print("Fibonacci Series of " + maxNumber + " numbers:");
int i = 1;
while (i <= maxNumber) {
System.out.print(previous + " ");
int next = previous + current;
previous = current;
current = next;
i++;
}
}
}
Вывод:
Fibonacci Series of 10 numbers:0 1 1 2 3 5 8 13 21 34
Ряд Фибоначчи на основе пользовательского ввода
import java.util.Scanner;
public class FibonacciUserInput {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("Enter the number of terms: ");
int maxNumber = scanner.nextInt();
int previous = 0;
int current = 1;
System.out.print("Fibonacci Series of " + maxNumber + " numbers:");
for (int i = 1; i <= maxNumber; i++) {
System.out.print(previous + " ");
int next = previous + current;
previous = current;
current = next;
}
scanner.close();
}
}
Логика: Та же итеративная логика, но количество членов задает пользователь.
Ряд Фибоначчи с использованием рекурсии
// Recursive implementation
public class FibonacciRecursion {
public static int fibonacci(int n) {
if (n == 0) return 0;
if (n == 1 || n == 2) return 1;
return fibonacci(n - 1) + fibonacci(n - 2);
}
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(fibonacci(i) + " ");
}
}
}
Вывод:
Fibonacci Series of 10 numbers: 0 1 1 2 3 5 8 13 21 34
Рекурсия объяснена:
- Базовые случаи:
n == 0возвращает 0;n == 1 || n == 2возвращает 1. - Рекурсивный случай:
fibonacci(n) = fibonacci(n-1) + fibonacci(n-2). - Каждый вызов разделяется на два подвызова, зеркаля классическое определение.
Хотя рекурсия дает чистое математическое выражение, она несет экспоненциальное время для больших n. Используйте мемоизацию или итеративные методы для производительно-критического кода.
java
- Java Hello World: ваша первая программа
- Переменные и литералы в Java: подробное руководство
- Понимание выражений, операторов и блоков в Java
- Классы и объекты в Java: практическое руководство
- Абстрактные классы и методы в Java: полное руководство
- Вложенные и внутренние классы в Java: типы, примеры и лучшие практики
- Java throw vs throws: мастерство обработки исключений с практическими примерами
- Освоение Java Autoboxing и Unboxing: практические примеры и лучшие практики
- Java-программа для определения, является ли число простым
- Java-программа для идентификации чисел Армстронга с использованием for-цикла