Fibonacci

Consegui fazer esse código para calcular a série de fibonacci

[code]class Fibonacci {

/**
 * @param args
 */
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;
		}
	}
}

}[/code]
Mas não estou conseguindo resolver um exercício que me pede para calcular a série com apenas duas variáveis. Será que vocês poderiam me dar uma ajuda todas minhas tentativas retornaram erro. Obrigado.

Boa tarde!

Não gostaria de ser mau-educado, mas isso já foi mais do que bem discutido, se der uma procurada normal, achará algo:
http://www.google.com.br/custom?hl=en&oe=ISO-8859-1&client=pub-7098584793170190&channel=7101482455&cof=FORID:1%3BL:http://www.guj.com.br/img/logo.gif%3BLH:99%3BLW:135%3BLBGC:336699%3BLP:1%3BGL:1%3BBGC:FFFFFF%3BT:%23000000%3BLC:%230000ff%3BVLC:%23663399%3BALC:%230000ff%3BGALT:%23008000%3BGFNT:%230000ff%3BGIMP:%230000ff%3BDIV:%23336699%3BAH:center%3BS:http://www.guj.com.br/busca.jsp%3B&domains=www.guj.com.br&sitesearch=www.guj.com.br&sa=X&oi=spell&resnum=0&ct=result&cd=1&q=fibonacci&spell=1

Até!

http://www.guj.com.br/posts/list/31902.java

Dê uma olhada ae… :idea:

Tah precisando estudar hein colega?

public static void main(String[] args) { int a = 0; System.out.print(a); int b = 1; System.out.print("," + b); for (int i = 0; i &lt 50; i++) { a += b; System.out.print("," + a); b += a; System.out.print("," + b); } }

Caro Marcos.
Talvez você não saiba, mas um fórum é um espaço para tirar dúvidas, e um fórum denominado “básico”, é para tirar dúvidas básicas, como a do colega Juninho Andrade. Sendo assim, a pergunta que dirigiu ao OP torna-se redundante, pois se ele postou algo aqui, com certeza é por que ele está querendo estudar mais.
Outrossim, por mais que seja básica a dúvida de um colega GUJnauta, acho totalmente inapropriado infligir um possível constrangimento ao OP com uma pergunta desestimulante, para não dizer desmoralizante, como a que você fez.
Lembre-se: Ninguém nasceu sabendo dizer “Hello, world!”

3 curtidas

Acho que é isso:

[code]public class Fibonacci
{
public static void main(String[] args)
{
//0,1,1,3,5,8,13,21…89
int a = 1;
for (int i = 0; i <= 100;)
{
System.out.print(i + “,”);
i = i + a;
a = i - a;
}
}

}[/code]
se eu estiver errado me corrijam.

que tal usar recursividade???

public class Fibonacci {

public static long fib(int n) {
    if (n &lt= 1) return n;
    else return fib(n-1) + fib(n-2);
}

public static void main(String[] args) {
    int n = Integer.parseInt(args[0]);
    for (int i = 1; i &lt= n; i++)
        System.out.println(i + &quot;: &quot; + fib(i));
}

}

pra rodar (exemplo): java Fibonacci 7

resultado:

1: 1
2: 1
3: 2
4: 3
5: 5
6: 8
7: 13

Concordo plenamente com o Mantu, uma duvida simples para mim pode ser um enigma para outros e vice versa, pois como dizia Albert Ainsten tudo é relativo! :lol: :lol:

se você quiser pode partir para uma coisa mais sofisticada como recursividade com cauda (acho que eh esse o nome mesmo)
a recursividade fácil de pensar para o Fibonacci é um método mais custoso do ponto de vista computacional
um professor me mostrou um método para o calculo de Fibonacci que utilizava 2 métodos diferentes e calculavam o Fibonacci enésimo quase que instantaneamente
o nome do professor é Bruno de Oliveira Schneider

Aproveite a idéia do marcos.junqueira e faça, só para testar, um programa que calcule o n-ésima termo da seqüência de Fibonacci de forma recursiva, e outro, de forma iterativa.
Faça testes com os dois programas com vários n-ésimos termos para ver a diferença de performance(sugiro que não teste com números acima de 40…)

me lembro muito bem q quando eu implementei essa recursao de cauda para o termo 50 funcionava perfeitamente se eu achar o código eu posto aqui

Valeu, pela força amigos!

Mantu e amigos eu sou novo na area de Java eu gostaria e apreender bem java… mas não sei por onde começar … se alguns de vcs puderem me ajudar eu agradeceria muito mesmo… me indiquem livros sites… tutoriais… etc… dai eu corro atraz…

Obrigadoo pelas diversas dicas e concordo com a posição acima, pois um enigma para uns pode ser fácil para outros !
Estava precisando de algo assim como este forum para arejar as idéias !
Sem Mais !

eu ainda não entendi porque usamos três variaveis!!
no meu pensamento só precisaríamos somar duas variaveis!
Sei lá fiquei meio perdida :stuck_out_tongue_winking_eye:
Alguém me explica?

Mas foi usado duas variaveis!!!

Felipe quis falar nos exemplos ateriores onde são utilizados três variaveis.
Não entendi porque colocamos o valor de uma na outra!! :wink:

[quote=rafaelaalves]Felipe quis falar nos exemplos ateriores onde são utilizados três variaveis.
Não entendi porque colocamos o valor de uma na outra!! ;)[/quote]

Olá Rafaela, não sei se eu vou te dar a explicação correta, mas nós colocamos a variável de uma na outra pois se obtém o próximo número usando a soma dos dois anteriores…
Eu também não entendi Fibonacci de primeira, mas o artigo do Wikipédia explica bem.

Meu algoritmo ficou assim:

[code]int f1=0,f2=1,fibonacci;

for(int i=0;i<=10;i++){
fibonacci=f1+f2;
f1=f2;
f2=fibonacci;
System.out.println(fibonacci);
}[/code]

O algoritmo do pessoal é melhor pois utiliza apenas duas variáveis enquanto o meu utiliza quatro, mas dessa forma fica bem legível com quatro variáveis para quem ainda não entendeu conseguir visualizar melhor.

Shalom!

Eu acredito que pra quem esta iniciando na linguagem como eu que estou fazendo os primeiros programas a resposta do nosso amigo sacolinno é a que mais ajuda pois utiliza apenas duas variaveis e nao usa termos ou tecnicas que iniciantes ainda nao entendem. Ou seja da pra entender todo o codigo fonte. Se algum iniciante esta em busca de resposta para o exercicio de fibonacci aconselho a usar o do nosso amigo sacolinno e analisar o codigo fonte. Obrigado a todos.

Sim Sim…esta serie do nosso amigo foi feita com duas variáveis e esta bem explicadinha!! ;D