Fibonacci en java

La serie de fibonacci la forman una serie de números tales que:

El primer término de la serie es el número 1
El segundo término de la serie es el número 1
Los siguientes términos de la serie de fibonacci se obtienen de la suma de los dos anteriores:

1, 1, 2, 3, 5, 8, 13, .....  

Vamos a escribir el programa java que muestra los N primeros números de la serie. El valor de N se lee por teclado.


import java.util.*;
/**
 * Serie de Fibonacci en Java
 * Programa que imprima los N primeros números de la serie de Fibonacci.
 * El primer número de la serie es 1, el segundo número es 1 y cada uno de los
 * siguientes es la suma de los dos anteriores.
 * 1, 1, 2, 3, 5, 8, 13,  ....... , N
 * @author Enrique
 */
public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        int numero,fibo1,fibo2,i;
        do{
            System.out.print("Introduce numero mayor que 1: ");
            numero = sc.nextInt();
        }while(numero<=1);
        System.out.println("Los " + numero + " primeros términos de la serie de Fibonacci son:");


        fibo1=1;
        fibo2=1;


        System.out.print(fibo1 + " ");
        for(i=2;i<=numero;i++){
             System.out.print(fibo2 + " ");
             fibo2 = fibo1 + fibo2;
             fibo1 = fibo2 - fibo1;
        }
        System.out.println();
    }
}
 






16 comentarios:

  1. amigo como lo pasarias a un algoritmo?
    ps antes de pasarlo a java me lo arias porfa?

    ResponderEliminar
  2. la serie fibo comienza en cero, no en uno xd

    ResponderEliminar
    Respuestas
    1. pfff ps solo es cambiar a fibo1=0;
      lol

      Eliminar
  3. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  4. Respuestas
    1. class Ejercicio{

      public static int fibonacci(int n)
      {
      if(n<2) return 1;
      else
      return fibonacci(n-1) + fibonacci(n-2);
      }

      Eliminar
  5. System.out.println("introduzca el tamaño de la serie: ");
    int n=Teclado.readInt();
    int x =0;
    int y =0;
    int solucion;

    for(int i=1;i<n+1;i++){
    if(i==1 || i==2){
    System.out.print("1, ");
    x=1;
    y=1;
    }
    else{
    solucion=x+y;
    System.out.print(solucion+",");
    x=y;
    y=solucion;
    }

    }

    }

    Esta sol me gusta más...

    ResponderEliminar
  6. int veces, fibonacci = 0, anterior = 1, penultimo;

    System.out.print("Ingrese cantidad de veces ");
    veces = leer.nextInt();

    for (int i = 1; i <= veces; i++)
    {
    penultimo = fibonacci;
    fibonacci = anterior + fibonacci;
    anterior = penultimo;

    System.out.print(fibonacci + " , ");
    }


    Con eso te ahorras forzar que muestre las dos veces el 1 mediante un print

    ResponderEliminar
    Respuestas
    1. if (n != 1 || n != 2) {
      for (int i = 1; i <= n; i++) {
      System.out.print(a+", ");
      a = a + b;
      b = a - b;
      }
      } else {
      System.out.println("1");
      }

      Eliminar
    2. De hecho, ni siquiera es necesario el if-else que puse arriba.

      for (int i = 1; i <= n; i++) {
      System.out.print(a+", ");
      a = a + b;
      b = a - b;
      }

      y te ahorras memoria ;)

      Eliminar
  7. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  8. Yo lo solucioné así:

    --------------------------------------- Clase principal

    public class Fibonacci {

    /**
    * @param args the command line arguments
    */
    public static void main(String[] args) {
    // TODO code application logic here
    Contar a = new Contar();
    a.Cuentas(1);
    }

    }


    ----------------------------------- clase secundaria

    public class Contar {

    private int c, a;

    public void Cuentas(int b) {

    for (int i = 0; i < 15; i++) {

    if (b <= 1) {
    a = b + 1;
    System.out.println("b: " + b);
    System.out.println("a: " + a);
    b = b + a;
    } else {
    System.out.println("b: " + b);
    c = b + a;
    System.out.println("c: " + c);
    a = b + c;
    System.out.println("a: " + a);
    b = a + c;

    }

    }

    }

    }

    ResponderEliminar