[RESOLVIDO]Fibonacci (De novo)

13 respostas
edumarques

Como devem imaginar, estou iniciando em Java, e já estou eu com o clichê do exercício de Fibonacci.

“Crie um método que calcule um termo da sequência de Fibonacci.
O método recebe como parâmetro o termo a ser calculado e o método devolve o valor deste termo.”

Devo receber do usuário qual termo da sequência ele deseja saber (creio que vetor seria o ideal aqui), e em seguida, mostrar o valor deste termo.

Fiz o código de diversas maneiras, mas todas deram erro. Alguém se habilita?

13 Respostas

marcos4ft
VagnerChines

Boa tarde,

Fica mais fácil se postares o código que está errado para vermos onde é que está o erro :lol:

edumarques
marcos4ft:
http://www.guj.com.br/java/44681-fibonacci

Então Marcos, o meu código havia ficado bem parecido com este:

class Fibonacci {  
  
 public static void main(String[] args) {  
        int x=0;  
        int y=1;  
        int b=1;  
          
        for(int i=0;i<=100;i++){  
            System.out.println(x+",");  
            b=x;  
            x=x+y;  
            y=b;  
              
            if(x>100){  
                break;  
            }  
        }  
    }  
  
}

Há aí um porém. Se for contar com a bondade do usuário querer saber um termo menor que o 100º, tudo bem. Mas se eu quiser saber o termo 150, já não seria possível porque o código se limita aos 100

edumarques

E ainda, quero que o usuário informe qual termo da sequência deseja saber.
Exemplo: Quero saber o valor do 20º termo

D

Ai é forçar demais cara. Você tem um código praticamente pronto, que se você alterar 2 linhas funciona pra x termos… O marcos4ft te deu uma resposta quase pronta, mas você tem que pensar também né.

edumarques

São justamente essas 2 linhas que eu não to sacando como fazer

marcos4ft
edumarques:
marcos4ft:
http://www.guj.com.br/java/44681-fibonacci

Então Marcos, o meu código havia ficado bem parecido com este:

class Fibonacci {  
  
 public static void main(String[] args) {  
        int x=0;  
        int y=1;  
        int b=1;  
          
        for(int i=0;i<=100;i++){  
            System.out.println(x+",");  
            b=x;  
            x=x+y;  
            y=b;  
              
            if(x>100){  
                break;  
            }  
        }  
    }  
  
}

Há aí um porém. Se for contar com a bondade do usuário querer saber um termo menor que o 100º, tudo bem. Mas se eu quiser saber o termo 150, já não seria possível porque o código se limita aos 100

Você mesmo ja respondeu sua pergunta. Se o código ta travado pra que mostre até o 100º termo, o que teria que mudar pra ficar dinâmico?

diego.sas

Cara ai já é d+… kkkkkkkkk.
Pocha está fixo “100”, é so tu colocar variável.

D
class Fibonacci {    
    
public static void main(String[] args) {    
        int x=0;    
        int y=1;    
        int b=1;    
        Scanner s = new Scanner(System.in);
        int termo = s.nextInt();
        for(int i=1;i<=termo;i++){
            if(i == termo)
            System.out.println(x); 
            b=x;    
            x=x+y;    
            y=b;    
        }    
    }    
    
}

Cara, você tem que se esforçar um pouco as vezes.. É a coisa mais simples do mundo, assim vai fazer o que você quer, mas ficar dependendo dos outros pra fazer o seu trabalho, ainda mais em um nível como esse, é errado e não vai te trazer progresso.

diego.sas
diegosammet:
class Fibonacci {    
    
public static void main(String[] args) {    
        int x=0;    
        int y=1;    
        int b=1;    
        Scanner s = new Scanner(System.in);
        int termo = s.nextInt();
        for(int i=1;i<=termo;i++){
            if(i == termo)
            System.out.println(x); 
            b=x;    
            x=x+y;    
            y=b;    
        }    
    }    
    
}

Putz, deveria ter deixado ele pensar.... rs

marcos4ft

Tambem acho…entregar mastigado assim ele não vai aprender nunca :wink:

edumarques
public void exercicio4(){
		int x=0;    
		int y=1;    
		int b=1;
		
		int num= Integer.parseInt(JOptionPane.showInputDialog(&quot;Qual termo deseja saber?&quot;));
		for(int i=1;i&lt;=num;i++){   
			b=x;    
			x=x+y;    
			y=b;
			}   
		System.out.println(&quot;o termo é &quot;+x);
	}

Ta aê! Funfou =P

Valeu a ajuda :thumbup:

D

Pelo menos coloca resolvido no tópico ¬¬

Criado 23 de março de 2012
Ultima resposta 23 de mar. de 2012
Respostas 13
Participantes 5