Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial programming >> java

Генерация последовательности Фибоначчи в Java: примеры for, while и рекурсии

Что такое ряд Фибоначчи в Java?

Ряд Фибоначчи — последовательность, где каждое число равно сумме двух предыдущих. В Java ряд традиционно начинается с 0 и 1:

0, 1, 1, 2, 3, 5, 8, 13, 21, …

Помимо математического интереса, последовательность Фибоначчи часто используется в анализе алгоритмов — например, для оценки времени рекурсивных процедур и вычисления наибольшего общего делителя.

Ряд Фибоначчи с использованием 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

Логика:

Ряд Фибоначчи с использованием 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

Рекурсия объяснена:

  1. Базовые случаи: n == 0 возвращает 0; n == 1 || n == 2 возвращает 1.
  2. Рекурсивный случай: fibonacci(n) = fibonacci(n-1) + fibonacci(n-2).
  3. Каждый вызов разделяется на два подвызова, зеркаля классическое определение.

Хотя рекурсия дает чистое математическое выражение, она несет экспоненциальное время для больших n. Используйте мемоизацию или итеративные методы для производительно-критического кода.

java

  1. Java Hello World: ваша первая программа
  2. Переменные и литералы в Java: подробное руководство
  3. Понимание выражений, операторов и блоков в Java
  4. Классы и объекты в Java: практическое руководство
  5. Абстрактные классы и методы в Java: полное руководство
  6. Вложенные и внутренние классы в Java: типы, примеры и лучшие практики
  7. Java throw vs throws: мастерство обработки исключений с практическими примерами
  8. Освоение Java Autoboxing и Unboxing: практические примеры и лучшие практики
  9. Java-программа для определения, является ли число простым
  10. Java-программа для идентификации чисел Армстронга с использованием for-цикла