Fibonacci em C++ com laço FOR
Os dois primeiros termos da série são: 0 e 1.Então, vamos pedir números inteiros acima de 2.
Vamos armazenar nas variáveis ult e penult o último número da sequência e o penúltimo, assim inicialmente:
ult = 1
penult = 0
Pedimos o número ao usuário e armazenamos em n.
Vamos para a nossa estrutura de repetição, o FOR.
Como já exibimos os dois primeiros termos da sequência: 0 e 1
Nossa contagem começa no terceiro membro da sequência: aux = 3
E ele vai até percorrer n iterações: aux <= n
Isso garante que n elementos da sequência sejam exibidos.
Dentro do FOR, primeiro, imprimimos o próximo termo: ult + penult
Agora vem o pulo do gato.
O novo valor de ult será a soma dele mesmo com o número anterior, penult.
E o valor novo de penult será ult.
Queremos fazer isso:
penult = ult = 1
ult = 1 + 0 = 1
O problema é que quando fazemos: penult = ult, o valor original de penult é perdido, que é o valor antigo que iríamos utilizar para calcular o novo valor de ult.
A solução pra isso é armazenar o valor antigo de penult na variável temporária temp.
Então é só fazer:
temp = penult;
penult = ult;
ult = ult + temp;
Pronto, agora a sequência 'andou', e está pronta para exibir o próximo termo.
Veja como fica nosso código:
#include <iostream> using namespace std; int main() { int n, aux, temp, ult=1, penult=0; cout << "Exibir quantos termos: "; cin >> n; cout << penult << endl << ult << endl; for(aux=3 ; aux<=n ; aux++){ cout << (ult+penult) << endl; temp = penult; penult = ult; ult = ult + temp; } return 0; }
Fibonacci com laço WHILE em C++
#include <iostream> using namespace std; int main() { int n, aux=3, temp, ult=1, penult=0; cout << "Exibir quantos termos: "; cin >> n; cout << penult << endl << ult << endl; while(aux<=n){ cout << (ult+penult) << endl; temp = penult; penult = ult; ult = ult + temp; aux++; } return 0; }Você consegue fazer com laço DO WHILE, que fica calculando quantos termos quiser, em um looping que só acaba quando o usuário digita 0?
Escreva nos comentários.
#include
ResponderExcluirusing namespace std;
int main() {
int n;
do {
int ult = 1, penult = 0, temp = 0, aux = 0;
cout << "Digite um número: ";
cin >> n;
cout << penult << endl << ult << endl;
for (aux=3; aux<=n; aux++){
cout << (ult + penult) << endl;
temp = penult;
penult = ult;
ult = ult + temp;
}
} while (n);
return 0;
}