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;
}
}
}
}
Fibonacci
31 Respostas
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=[telefone removido]&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 < 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!”
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;
}
}
}
que tal usar recursividade???
public class Fibonacci {
public static long fib(int n) {
if (n <= 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 <= n; i++)
System.out.println(i + ": " + 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 
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!! 
Felipe quis falar nos exemplos ateriores onde são utilizados três variaveis. Não entendi porque colocamos o valor de uma na outra!! ;)
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.
http://pt.wikipedia.org/wiki/N%C3%BAmero_de_Fibonacci
Meu algoritmo ficou assim:
int f1=0,f2=1,fibonacci;
for(int i=0;i<=10;i++){
fibonacci=f1+f2;
f1=f2;
f2=fibonacci;
System.out.println(fibonacci);
}
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
Questão 3
Os números de Fibonacci formam uma sequência em que cada número é igual à soma dos dois anteriores. Os dois primeiros números são, por definição igual a 1, segundo o exemplo abaixo:
Ex: 1 1 2 3 5 8 13 …
Escreva um programa que carregue um úmero inteiro pelo teclado e indique se ele faz parte da sequência de Fibonacci.
Não estou conseguindo fazer isso ainda, alguém poderia me ajudar???
package lista02;
import java.util.Scanner;
public class Ex3Fibonacci {
private int entrada() {
System.out.println("Digite um número para o cálculo de finonacci");
int valor = new Scanner(System.in).nextInt();
return valor;
}
private int calcularFibonacci(int val) {
if (val <= 2)
return 1;
else
return calcularFibonacci(val - 1) + calcularFibonacci(val - 2);
}
private void imprimirCalculo(int val) {
int n = 0;
for (int i = 1; i < val; i++) {
n = calcularFibonacci(i);
System.out.println(n);
}
}
public static void main(String[] args) {
Ex3Fibonacci obj = new Ex3Fibonacci();
int calculo = obj.entrada();
obj.calcularFibonacci(calculo);
obj.imprimirCalculo(calculo);
}
}
Programação copy & paste não funciona - você precisa pensar um pouco. Como é que você sabe se um número faz parte da sequência de Fibonacci?
Por exemplo, como é que você sabe que 10 não faz parte da sequência de Fibonacci?
Pense, pense, pense, escreva no papel (não no computador), e pense mais um pouco.
só que o problema é que quando digito 8 ele não faz até 8 ele imprime os 8 primeiros numeros da sequencia
e o que o exercicio tá pedindo é mostrar até o numero que o usuario digitou…
Por isso que eu pedi para você pensar. O programa que você está usando (e copiou sei lá de quem) não faz o que o exercício está pedindo.
vou pensar um jeito então de quando passar pelo for ir comparando se tem o numero digitado na sequencia,
mas ainda está complicado
ou o caminho ainda não é esse???
Uma dica: a sequência de Fibonacci é sempre crescente (ou seja, os números sempre aumentam, nunca diminuem. Então você pode ir gerando os números de Fibonacci até que você ache um número que é maior ou igual ao número que você tem .
Responda-me o que seu programa deve imprimir no caso em que o número é maior do que você tem , e no caso em que o número é igual ao que você tem .
Como sabemos que fibonacci é uma sequencia de números, como sequencia de numeros pares, sequencia de numeros impares, todos com uma lógica por trás pra trazer a sequencia
fiz por exemplo, pra ver se o numero esta na sequencia de numeros pares, queria fazer exatamente a mesma coisa mas na sequencia de fibonacci…
será que você poderia me ajudar???
package lista02;
import java.util.Scanner;
public class Ex03 {
public static void main(String[] args) {
boolean estaNaSeguencia = false;
System.out.println("Digite um número para ver se está na sequencia de numeros pares: ");
int valor = new Scanner(System.in).nextInt();
for(int i= 0; i<= valor; i++){
if(valor % 2 == 0){
if(valor == i){
estaNaSeguencia = true;
}
}
}
if(estaNaSeguencia){
System.out.println("O número " + valor + " está na sequência de números pares");
}else{
System.out.println("O número " + valor + " não está na sequência de números pares");
}
}
}
Finalizei mas achei meu código da pra ser mais enxuto será que alguem poderia me ajudar…???
package lista02;
import java.util.Scanner;
public class FibonacciEx3 {
public static void main(String[] args) {
int num;
int fant, fatual, fprox;
int contador;
System.out.print("Digite um número para ver faz parte da sequência Fibonacci: ");
num = new Scanner(System.in).nextInt();
/* inicializacoes */
fant = 0;
fatual = 1;
contador = 1;
boolean estaNaSquencia = false;
while (contador < num) {
fprox = fatual + fant; /* proximo numero de Fibonacci */
fant = fatual;
fatual = fprox;
if (num == fprox) {
estaNaSquencia = true;
}
contador++;
}
if ((num == 1) || (num == 2) || (num == 3)) {
estaNaSquencia = true;
}
if (estaNaSquencia) {
System.out.println("O número " + num
+ " faz parte da sequencia Fibonacci");
} else {
System.out.println("O número " + num
+ " NÃO faz parte da sequencia Fibonacci");
}
}
}
Não olhei seu código, mas você realmente testou isso? Você tem de testar com números que estão e números que não estão na sequência de Fibonacci. Por exemplo, o número 1000 não está nessa sequência, mas o número 39088169 está.
Olhe em http://oeis.org/A000045 para lhe ajudar com alguns números de Fibonacci que você pode usar para testar.
Testei e já está funcionando inclusive com o número que você passou
39088169 e 1000
dando as seguintes saídas
O número 39088169 faz parte da sequencia Fibonacci
O número 1000 NÃO faz parte da sequencia Fibonacci
só achei meio gambiarra testar o numero que foi digitado com o :
if ((num == 1) || (num == 2) || (num == 3)) {
estaNaSquencia = true;
}
Fibonacci usando recursividade
public class Fibonacci {
private int enesimoNumero = 0;
public void calcula(int x,int y,int total){
if(enesimoNumero++ < total){
System.out.print(y + " ");
calcula(y,x+y,total);
}
}
public static void main(String[] args) {
Fibonacci teste = new Fibonacci();
teste.calcula(0, 1, 10);
}
}
saída: 1 1 2 3 5 8 13 21 34 55
Uma soluçao para Serie Fibonacci utilizando apenas duas variaveis.
Na clausula for, indicamos o limite anterior ao ultimo resultado a ser calculado(nesse caso 200).
O motivo de declar a, b fora do “for”, é permitir a impressão do ultimo resultado da serie calculado(para ‘a’), saindo da estrutura do for.
class Fibonacci
{
public static void main (String[] args)
{
System.out.println("Serie de Fibonacci");
int a, b;
for(a=0,b=1;a<=200;b+=a,a=b-a)
{
System.out.print(a+",");
}
System.out.println(a);
}
}