Números de fibonacci en idioma java

Números de fibonacci en idioma java
Los números de Fibonacci son una secuencia particular de enteros positivos (enteros), comenzando de cero a infinito positivo. El número actual de fibonacci se obtiene agregando los dos números de fibonacci anteriores inmediatos. Los dos números de Fibonacci anteriores inmediatos no son cualquier número.

De hecho, los dos primeros números de Fibonacci están predefinidos. El primer número de Fibonacci es 0 y el segundo número de Fibonacci es 1. Con indexación basada en cero y asumiendo que los números de Fibonacci están en una matriz, luego:

En el índice 0, el número Fibonacci es 0, (predefinido);
En el índice 1, el número Fibonacci es 1, (predefinido);
En el índice 2, el número Fibonacci es 1 = 1 + 0, (por definición);
En el índice 3, el número Fibonacci es 2 = 1 + 1, (por definición);
En el índice 4, el número Fibonacci es 3 = 2 + 1, (por definición);
En el índice 5, el número Fibonacci es 5 = 3 + 2, (por definición);
En el índice 6, el número Fibonacci es 8 = 5 + 3, (por definición);
En el índice 7, el número Fibonacci es 13 = 8 + 5, (por definición);
En el índice 8, el número Fibonacci es 21 = 13 + 8, (por definición);
En el índice 9, el número Fibonacci es 34 = 21 + 13, (por definición);

etcétera.

En la programación, la variable N, y no I se usa para los índices basados ​​en cero para estos números de Fibonacci. Y con eso, los primeros doce números de Fibonacci son:

0 1 1 2 3 5 8 13 21 34 55 89
0 1 2 3 4 5 6 7 8 9 10 11

La segunda fila de la tabla proporciona los índices basados ​​en cero, cada uno de los cuales tendría la variable N en la programación. La primera fila proporciona los números de Fibonacci correspondientes. Entonces, los números de Fibonacci no son cualquier número. La definición central comienza con 0, para el primer número de Fibonacci y 1 para el segundo número de Fibonacci. El resto de los números se producen a partir de ahí.

Los números de Fibonacci se pueden producir en el tiempo O (n) y también en el tiempo o (1). Por tiempo o (n), si n es 12, por ejemplo, entonces se producirían los primeros doce fibonacci. Por tiempo o (1) tiempo, solo se produce un número de fibonacci. Por ejemplo, si n es 6, entonces se produciría el fibonacci número 8.

Este artículo explica estas dos formas de producir números de Fibonacci en Java.

Fórmula para un número de fibonacci

Hay una fórmula matemática para un número de fibonacci. Esta fórmula se puede escribir en tres líneas o una línea. En tres líneas, se escribe como:

donde fnorte es el número de fibonacci en la N basada en ceroth índice. Así es como se define el número de fibonacci.

Producir números de fibonacci en el tiempo o (n)

Si los números de fibonacci se producen en O (3) veces, se producirían los números, 0, 1, 1; Esos son los primeros tres números de fibonacci. El último n basado en ceroth índice aquí, es 2. Si los números de fibonacci se producen en O (7) veces, se producirían los números, 0, 1, 1, 2, 3, 5, 8; Esos son los primeros siete números de fibonacci. El último n basado en ceroth índice aquí, es 6. Si los números de fibonacci se producen en O (n) veces, se producirían los números, 0, 1, 1, 2, 3, 5, 8 - - - - - - - - - Esos son los primeros números n fibonacci. El último n basado en ceroth El índice aquí es N-1.

El método Java en una clase para producir los primeros números N Fibonacci es:

clase Fibonacci
void fibonacci (int [] p)
int n = p.longitud;
if (n> 0)
P [0] = 0;
if (n> 1)
P [1] = 1;
para (int i = 2; iint Currno = P [i - 1] + P [i - 2];
P [i] = Currno;


La clase, Fibonacci es privada. El fibonacci () El método toma la matriz P y devuelve vacío. El método comienza determinando la longitud de la matriz. Esta longitud de n es el número de números de fibonacci requeridos. Los números de Fibonacci primero y segundo se determinan explícitamente y se colocan en las primeras y segundas posiciones en la matriz.

El resto de los números de Fibonacci que comienzan desde el tercero (índice, n = 2) se determinan en un bucle for-bucle y se colocan en sus posiciones en la matriz. Entonces, la función tiene que devolver nula. La declaración principal en el bucle for-bucle agrega los dos números anteriores.

La variable de índice, i, se ha utilizado en lugar de n, con el propósito de claridad.

Una clase principal de Java adecuada (con el método principal de Java) es:

clase pública Main
public static void main (string args [])
int m = 12;
int [] arr = new int [m];
Fibonacci obj = new Fibonacci ();
obj.fibonacci (arr);
para (int i = 0; iSistema.afuera.imprimir (arr [i] + "");
Sistema.afuera.println ();

Después de que los números han sido producidos por el método Fibonacci (), el método principal de Java los lee.

Producir un número de fibonacci en tiempo constante

Hay una fórmula matemática que se puede usar para producir un número de fibonacci, cuando se le da el índice basado en cero correspondiente, n. La fórmula es:

donde n es el índice basado en cero y la fibnorte es el número de fibonacci correspondiente. Tenga en cuenta que en el lado derecho de la ecuación, no es la raíz cuadrada de 5 la que se eleva al poder n; Es la expresión entre paréntesis la que se eleva al poder n. Hay dos de esas expresiones.

Si n es 0, fibnorte sería 0. Si n es 1, fibnorte sería 1. Si n es 2, fibnorte sería 1. Si n es 3, fibnorte sería 2. Si n es 4, fibnorte serían 3, y así sucesivamente. El lector puede verificar esta fórmula matemáticamente, sustituyendo diferentes valores para n y evaluando.

Cuando se codifica, esta fórmula produciría solo un número de fibonacci para n. Si se requieren más de un número de fibonacci, el código para la fórmula debe llamarse una vez para cada uno de los diferentes índices correspondientes.

En Java, el método para producir solo un número de fibonacci es:

importar java.lang.*;
FIB de clase
doble fibno (int n)
doble fibn = (matemáticas.POW ((1+matemáticas.sqrt (5))/2, n) -math.POW ((1-MATH.sqrt (5)) / 2, n)) / matemáticas.sqrt (5);
return fibn;

El java.lang.* El paquete tuvo que importarse al comienzo del programa. Esto se debe a que el paquete tiene la clase de matemáticas, que tiene métodos de potencia (POW) y raíz cuadrada (SQRT). El método Java personalizado aquí implementa la fórmula matemática directamente.

La complejidad del tiempo para esta función es o (1), constante domestimiento de una operación principal. Una clase principal de Java adecuada, con el método principal de Java para el método anterior es:

clase pública Main
public static void main (string args [])
int n = 11;
Fib obj = new fib ();
Doble ret = obj.fibno (n);
Sistema.afuera.println (ret);

Se envía el índice n = 11 y el número de fibonacci, 89 se devuelve. La salida es:

89.0000000000000003

Se pueden eliminar los dígitos decimales innecesarios, pero esa es una discusión por otro tiempo.

Conclusión

Los números de Fibonacci son una secuencia particular de números enteros. Para obtener el número actual, agregue los dos números anteriores inmediatos correspondientes. Los dos primeros números de Fibonacci, 0 seguidos de 1, están predecolares, para toda la secuencia. El resto de los números de Fibonacci se producen a partir de ahí.

Para producir números de fibonacci desde el índice 2, a los que corresponde al índice N-1, use un bucle for-bucle con la declaración principal:

int Currno = P [i - 1] + P [i - 2];

Donde CurrNo es el número actual de Fibonacci y P es la matriz para almacenar los números N.

Para producir solo un número de Fibonacci a partir de cualquier índice basado en cero N, use la fórmula matemática: