Sequência de fibonacci

6 respostas
D

Alguém pode me ajudar eu estou digitando um número e apartir dele esta me dando uma sequência mas o que minha professora quer é que dê a posição tipo se tiver 1,4,5

a pessoa digitar 2 vai aparecer o número 4 e assim por diante alguém ajuda o enunciado da questão é esse...

5-Criar um programa que determine e mostre os n primeiros números da sequencia de Fibonacci,
onde n é fornecido pelo usuário.
Sabe-se que esta sequencia é infinita, e os seus números são definidos assim:
1º número = 1
2º número = 1
a partir do 3º, os números são obtidos em função da soma dos seus dois antecessores. Com isso,
teríamos uma sequencia assim: 1- 1- 2- 3- 5- 8- 13 ? 21 - ...

import java.util.*;
public class exercicio5 {
public static void main(String[] args) {

int a,b,n=0;
a=b=0;
Scanner dado = new Scanner(System.in);
System.out.print("digite um numero");
a = dado.nextInt();
//1000 de Limite do loop
while(a>0){
System.out.print(","+(a+b));
if(a>b)
b+=a;
else
a+=b;
}
 
}
}

6 Respostas

rxca

daniferreira,

primeiro comece pensando no problema do fibonacci. Como você consegue fazer a sequência funcionar? Você poderia fazer algo assim:

Scanner temp = new Scanner (System.in);
int n = temp.nextInt(), i = 0;
int anterior = 1, atual = 1, temp = 1;

System.out.print(anterior + " ");

while (i < n) {
    System.out.print(atual + " ");
    temp = atual; // guarda o valor anterior
    atual += anterior; // pega o próximo número da sequência
    anterior = temp; // recupera o número anterior
    i++; // tinha esquecido de incrementar
}

não sei se isso está certo, escrevi sem testar… mas a ideia é mais ou menos essa, você ter duas variáveis que representem o número atual e o anterior e ir mexendo com elas.

daí quando você imprimir a sequência, você pode colocar uma condição no meio testando se a posição que você escolheu é igual à que está na iteração do laço… se for é a posição, imprime o número, é só adaptar o método/bloco de código

D

mais nao tem como usar o meu código pra fazer isso?

D

eu testei mais ta dando erro seu código o meu tava quase no jeito teria q arrumar uma coisinha masi nao sei o q é pra mostrar na posição

D

dei uma alterada no seu código é quase isso mais agora ele só ta guardando numero na frente testa ai???

import java.util.*;
public class exercicio5{
	public static void main(String args[]){
	    Scanner dado = new Scanner (System.in);  
	    int n , i = 0;  
	    int anterior = 1, atual = 1, temp = 1;  
	      System.out.println("digite");
	      n = dado.nextInt();
	    System.out.print(anterior + "");  
	      
	    while (i < n) {  
	        System.out.print(atual + "");  
	        temp = atual; // guarda o valor anterior  
	        atual += anterior; // pega o próximo número da sequência  
	        anterior = temp; // recupera o número anterior  
	        i++; // tinha esquecido de incrementar  
	    }  
}
}
yhhik
tente isso.
public static void main(String [] args){   
    	int a=0,b=1,n=0,soma=0;   
    	 Scanner dado = new Scanner(System.in);   
        System.out.print("digite um numero");   
    	n = dado.nextInt();   
    	 System.out.print(a+","); 
    	 System.out.print(b+","); 
    	for(int i=2;i<n;i++) {
    		soma=a+b;
    	    System.out.print(soma+",");   
    		a=b;
    		b=soma;
    		
    	}
}
Rodrigo_Sasaki

Ele só não pode printar esse a do começo que tem valor 0
mas acho que com esse laço funciona

Criado 23 de novembro de 2011
Ultima resposta 24 de nov. de 2011
Respostas 6
Participantes 4