Gerar números de Fibonacci em C++

Jinku Hu 12 outubro 2023
  1. C++ Use o Método Iterativo para Imprimir os Primeiros n Itens na Sequência de Fibonacci
  2. C++ Use o Método Iterativo para Imprimir o Item n-ésimo na Sequência de Fibonacci
Gerar números de Fibonacci em C++

Este artigo demonstrará vários métodos de como gerar números de Fibonacci em C++.

C++ Use o Método Iterativo para Imprimir os Primeiros n Itens na Sequência de Fibonacci

Os números de Fibonacci são comumente conhecidos em matemática como uma sequência de números em que cada item é a soma dos dois anteriores, começando em 0 e 1. Neste código de exemplo, pegamos a entrada do usuário como inteiro n e geramos os primeiros n números na sequência de Fibonacci. A solução é iterativa simples, onde inicializamos os valores iniciais e iteramos n-3 vezes para somar os valores anteriores. A cada iteração, a soma é impressa no fluxo cout e os valores armazenados são deslocados por uma janela de número. Observe que a condição if é implementada, que verifica o inteiro de entrada - 0 e imprime o valor correspondente. A primeira instrução cout trata o caso em que n é igual a 2, já que a condição de loop for é avaliada como falsa e não continua.

#include <iostream>

using std::cin;
using std::cout;
using std::endl;
using std::string;

void generateFibonacci(unsigned long long n) {
  if (n == 1) {
    cout << 0 << endl;
    return;
  }

  unsigned long long a = 0;
  unsigned long long b = 1;
  unsigned long long c;

  cout << a << " " << b;

  for (unsigned long long i = 3; i <= n; i++) {
    c = a + b;
    cout << " " << c;
    a = b;
    b = c;
  }
}

int main() {
  unsigned long long num;

  cout << "Enter the number of items to generate Fibonacci series: ";
  cin >> num;

  generateFibonacci(num);

  return EXIT_SUCCESS;
}

Resultado:

Enter the number of items to generate Fibonacci series: 10
0 1 1 2 3 5 8 13 21 34

C++ Use o Método Iterativo para Imprimir o Item n-ésimo na Sequência de Fibonacci

Alternativamente, podemos implementar uma função que retorna o n-ésimo número na sequência de Fibonacci. Observe que armazenamos a entrada do usuário em unsigned long long porque queremos ser capazes de gerar os maiores números que podem ser armazenados por tipos C++ embutidos. A função começa com a instrução if-else para verificar os três primeiros casos e retornar valores embutidos em código. Por outro lado, se n for maior que 3, prosseguimos para o bloco de loop e iteramos até obter o n-ésimo número na sequência.

#include <iostream>

using std::cin;
using std::cout;
using std::endl;
using std::string;

unsigned long long generateFibonacci(unsigned long long n) {
  if (n == 1) {
    return 0;
  } else if (n == 2 || n == 3) {
    return 1;
  }

  unsigned long long a = 1;
  unsigned long long b = 1;
  unsigned long long c;

  for (unsigned long long i = 3; i < n; i++) {
    c = a + b;
    a = b;
    b = c;
  }

  return c;
}

int main() {
  unsigned long long num;

  cout << "Enter the n-th number in Fibonacci series: ";
  cin >> num;

  cout << generateFibonacci(num);
  cout << endl;

  return EXIT_SUCCESS;
}

Resultado:

Enter the n-th number in Fibonacci series: 10
34
Autor: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn Facebook

Artigo relacionado - C++ Math