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 áurea, 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 en el que se repite 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
Este es el código fuente:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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(""); | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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(); | |
} | |
} |
No hay comentarios.:
Publicar un comentario