Gerar Sequência de Fibonacci em Java: Exemplos com For, While e Recursão
O que é a Série de Fibonacci em Java?
A série de Fibonacci é uma sequência onde cada número é igual à soma dos dois anteriores. Em Java, a série tradicionalmente começa com 0 e 1:
0, 1, 1, 2, 3, 5, 8, 13, 21, …
Além de sua intriga matemática, a sequência de Fibonacci é frequentemente usada em análise de algoritmos — por exemplo, na estimativa do tempo de execução de procedimentos recursivos e no cálculo do máximo divisor comum.
- Implementação com loop for
- Implementação com loop while
- Implementação recursiva
- Exemplo com entrada interativa
Série de Fibonacci Usando Loop For
// Usando loop for
public class FibonacciExample {
public static void main(String[] args) {
int maxNumber = 10; // Número de termos
int previous = 0;
int current = 1;
System.out.print("Série de Fibonacci de " + maxNumber + " números:");
for (int i = 1; i <= maxNumber; i++) {
System.out.print(previous + " ");
int next = previous + current;
previous = current;
current = next;
}
}
}
Saída:
Série de Fibonacci de 10 números: 0 1 1 2 3 5 8 13 21 34
Lógica:
- Inicialize
previous = 0ecurrent = 1. - Loop
maxNumbervezes, imprimindopreviouse atualizando valores.
Série de Fibonacci Usando Loop While
// Usando loop while
public class FibonacciWhileExample {
public static void main(String[] args) {
int maxNumber = 10;
int previous = 0;
int current = 1;
System.out.print("Série de Fibonacci de " + maxNumber + " números:");
int i = 1;
while (i <= maxNumber) {
System.out.print(previous + " ");
int next = previous + current;
previous = current;
current = next;
i++;
}
}
}
Saída:
Série de Fibonacci de 10 números: 0 1 1 2 3 5 8 13 21 34
Série de Fibonacci Baseada em Entrada do Usuário
import java.util.Scanner;
public class FibonacciUserInput {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("Digite o número de termos: ");
int maxNumber = scanner.nextInt();
int previous = 0;
int current = 1;
System.out.print("Série de Fibonacci de " + maxNumber + " números:");
for (int i = 1; i <= maxNumber; i++) {
System.out.print(previous + " ");
int next = previous + current;
previous = current;
current = next;
}
scanner.close();
}
}
Lógica: A mesma lógica iterativa se aplica, mas a contagem de termos é fornecida pelo usuário.
Série de Fibonacci Usando Recursão
// Implementação recursiva
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("Série de Fibonacci de " + maxNumber + " números: ");
for (int i = 0; i < maxNumber; i++) {
System.out.print(fibonacci(i) + " ");
}
}
}
Saída:
Série de Fibonacci de 10 números: 0 1 1 2 3 5 8 13 21 34
Recursão Explicada:
- Casos base:
n == 0retorna 0;n == 1 || n == 2retorna 1. - Caso recursivo:
fibonacci(n) = fibonacci(n-1) + fibonacci(n-2). - Cada chamada se divide em duas sub-chamadas, espelhando a definição clássica.
Embora a recursão ofereça uma expressão matemática limpa, ela incorre em tempo exponencial para n grande. Use memoização ou métodos iterativos para código crítico de desempenho.
Java
- Java Hello World: Seu Primeiro Programa
- Variáveis e Literais em Java: Guia Completo
- Entendendo Expressões, Instruções e Blocos em Java
- Classes e Objetos em Java: Guia Prático
- Classes e Métodos Abstratos em Java: Guia Completo
- Dominando Classes Aninhadas e Internas em Java: Tipos, Exemplos e Boas Práticas
- Java throw vs throws: Dominando Tratamento de Exceções com Exemplos Práticos
- Dominando Autoboxing e Unboxing em Java: Exemplos Práticos e Boas Práticas
- Programa Java para Determinar se um Número é Primo
- Programa Java para Identificar Números de Armstrong Usando Loop For