- Get link
- Other Apps
- Get link
- Other Apps
Hola a todos, hoy vamos a diseñar una clase que nos permita calcular o más bien construir la Serie de Fibonacci. Recuerden que la Serie de Fibonacci inicia con el número 0 y 1 y continua sumando los dos términos para obtener el siguiente, en este caso: 0 + 1 = 1, lo que da: 0, 1, 1. Volviendo a calcular Fibonacci tenemos: 1 + 1 = 2, lo que da: 0, 1, 1, 2 el siguiente termino es: 1 + 2 = 3 etc. Como cálculo adicional, nuestra clase nos va a servir para calcular el cociente entre un termino actual de la serie y el termino anterior. Como vamos a ver en la solución del programa, entre más crezca la Serie Fibonacci, el resultado de este cociente converge a uno de esos números extraños y que podemos encontrar en la naturaleza, el arte, las matemáticas e incluso las finanzas: 1,618 más conocido como la proporción aúrea, número de Dios o simplemente Phi (ver Wikipedia).
En nuestra aplicación, vamos a construir la serie haciendo uso de la instrucción for( variable inicialización del ciclo; control del ciclo; incremento de la variable), que en el caso de nuestro programa, lo tenemos en la clase SerieFibonacci.java en la línea 33: for(int i = 3; i <= total_terminos; i++).
En esta clase, la instrucción for lo que hace es iniciar la variable i de tipo entero igualándola a 3 e inicia un proceso de repetir el código que se encuentra en las llaves del for { } (en nuestro caso el código que esta entre las líneas 33 y 40), repitiéndolo hasta que la variable i sea mayor que la variable total_terminos.
Para asegurar que la condición se cumpla en algún momento y no se genere un ciclo de repetición infinito, la variable i se incrementa en 1 (en Java i++ es igual a i = i +1) cada vez que se cumple un ciclo.
Veamos entonces en que consiste esta clase y como se implementa en el programa: SerieFibonacciTest.java
SerieFibonacci.java:
package series; public class SerieFibonacci { private long termino_inicial = 0; private long termino_siguiente = 1; private long termino_temp = 0; private int total_terminos; public SerieFibonacci(int total_terminos) { this.total_terminos = total_terminos; } public int getTotal_terminos() { return total_terminos; } public void setTotal_terminos(int total_terminos) { this.total_terminos = total_terminos; this.termino_inicial = 0; this.termino_siguiente = 1; this.termino_temp = 0; } public void generarFibonacci() { System.out.printf("%s%20s%17s%n", "Termino", "Fibonacci", "Golden Ratio"); System.out.printf("%4d%, 20d%, 20.10f%n", 1, termino_inicial, 0.0); System.out.printf("%4d%, 20d%, 20.10f%n", 2, termino_siguiente, 0.0); for(int i = 3; i <= total_terminos; i++) { termino_temp = termino_inicial + termino_siguiente; System.out.printf("%4d%, 20d%, 20.10f%n", i, termino_temp, (float)(termino_temp)/(float)(termino_siguiente) ); termino_inicial = termino_siguiente; termino_siguiente = termino_temp; } System.out.println(""); } }SerieFibonacciTest.java:
package series; public class SerieFibonacciTest { public static void main(String[] args) { // TODO Auto-generated method stub SerieFibonacci fibonacci = new SerieFibonacci(50); fibonacci.generarFibonacci(); fibonacci.setTotal_terminos(10); fibonacci.generarFibonacci(); } }
Hasta la próxima.
Comments
Post a Comment