in

3 formas diferentes de imprimir series de Fibonacci en Java

gfg 200x200 min

Dado un número norte, necesitamos encontrar la Serie Fibonacci hasta el norte término.

La serie de Fibonacci es una serie de elementos donde, los dos elementos anteriores se agregan para obtener el siguiente elemento, comenzando con 0 y 1.

Ejemplos:

Aporte: N = 10
Producción: 0 1 1 2 3 5 8 13 21 34
Aquí el primer término de Fibonacci es 0 y el segundo es 1, de modo que el tercer término = primero (o) + segundo (1), etc. y así sucesivamente.

Aporte: N = 15
Producción: 0 1 1 2 3 5 8 13 21 34 55 89144233377

Método 1 – iterativo: Inicialice el primer y segundo números para 0 y 1. A continuación, imprimimos el primer y segundo número. Luego enviamos el flujo al ciclo while iterativo donde obtenemos el siguiente número agregando los dos números anteriores y simultáneamente intercambiamos el primer número con el segundo y el segundo con el tercero.

A continuación se muestra la implementación del enfoque anterior:

Java

 

class GFG {

 

    

    static void Fibonacci(int N)

    {

        int num1 = 0, num2 = 1;

 

        int counter = 0;

 

        

        while (counter < N) {

 

            

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

 

            

            int num3 = num2 + num1;

            num1 = num2;

            num2 = num3;

            counter = counter + 1;

        }

    }

 

    

    public static void main(String args[])

    {

        

        int N = 10;

 

        

        Fibonacci(N);

    }

}

Producción:
0 1 1 2 3 5 8 13 21 34

Complejidad del tiempo: SOBRE)
Espacio auxiliar: O (1)

Método 2 – Usando Recursividad: Dado que el número de Fibonacci es la suma de los dos números anteriores. Podemos usar la recursividad según la siguiente condición:

  1. Obtenga el número cuya serie de Fibonacci necesita calcularse.
  2. Recursivamente iterar desde el valor N a 1:
    • Caso base: Si el valor llamado recursivamente es menor que 1, devuelve 1 la función.
    • Llamada recursiva: Si no se cumple el caso base, entonces llame de forma recursiva a los dos valores anteriores como:

      función_recursiva (N – 1) + función_recursiva (N – 2);

    • Declaración de devolución: En cada llamada recursiva (excepto el caso base), devuelva la función recursiva para los dos valores anteriores como:

      función_recursiva (N – 1) + función_recursiva (N – 2);

A continuación se muestra la implementación del enfoque anterior:

Java

 

class GFG {

 

    

    static int fib(int n)

    {

        

        if (n <= 1)

            return n;

 

        

        return fib(n - 1)

            + fib(n - 2);

    }

 

    

    public static void

    main(String args[])

    {

        

        int N = 10;

 

        

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

 

            System.out.print(fib(i) + " ");

        }

    }

}

Producción:
0 1 1 2 3 5 8 13 21 34

Complejidad del tiempo: O (2norte)
Espacio auxiliar: O (1)

Método 3 – Usando Programación dinámica: Podemos evitar el trabajo repetido realizado en el método 2 almacenando los números de Fibonacci calculados hasta ahora. A continuación se muestran los pasos:

  1. Crea una matriz arr[] de tamaño norte.
  2. Inicializar arr[0] = 0, arr[1] = 1.
  3. Iterar sobre [2, N] y actualiza la matriz arr[] como:

    arr[i] = arr[i – 2] + arr[i – 1]

  4. Imprime el valor de arr[N].

A continuación se muestra la implementación del enfoque anterior:

Java

 

class fibonacci {

 

    

    static int fib(int n)

    {

 

        

        

        

        int f[] = new int[n + 2];

 

        int i;

 

        

        

        F[0] = 0;

        F[1] = 1;

 

        for (i = 2; i <= n; i++) {

 

            

            

            F[i] = f[i - 1] + f[i - 2];

        }

 

        

        return f[n];

    }

 

    public static void

    main(String args[])

    {

        

        int N = 10;

 

        

        for (int i = 0; i < N; i++)

            System.out.print(fib(i) + " ");

    }

}

Producción:
0 1 1 2 3 5 8 13 21 34

Complejidad del tiempo: SOBRE)
Espacio auxiliar: SOBRE)

¡Atención lector! No dejes de aprender ahora. Obtenga todos los conceptos importantes de DSA con el Curso autodidacta de DSA a un precio asequible para los estudiantes y prepárese para la industria. Para completar su preparación desde el aprendizaje de un idioma hasta DS Algo y muchos más, consulte Curso completo de preparación para entrevistas.

En caso de que desee asistir clases en vivo con expertos, consulte Clases en vivo de DSA para profesionales que trabajan y Programación competitiva en vivo para estudiantes.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

apple touch icon@2

En términos simples, ¿qué significa «estático» en Java?

Drugs

Norco vs Vicodin: diferencia y comparación