0,1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,1597,...
Elle est utilisée dans de nombreux domaines qui vont des statistiques, à la finance et même à la littérature (Da Vinci Code). Le nombre doré, issu de la division f(n)/f(n-1), est une constante importante dans l'art et l'architecture.
Calcul de la suite de Fibonacci
Le but de la class FibonacciSerie est d'illustrer:- la création d'un GUI contenant un JTable
- l'affichage d'un Double avec Double.toString et DecimalFormat,
- l'ajout d'une ligne dans un JTable.
import java.text.DecimalFormat;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
/**
* Calculer les 30 premiers elements de la suite de Fibonacci
* @author Fobec 2010
*/
public class FibonacciSerie extends JFrame {
private JTable jTable = null;
/**
* Constructeur
* Creation du GUI
*/
public FibonacciSerie() {
super("Suite de Fibonacci");
JScrollPane jscrollPane = new javax.swing.JScrollPane();
DefaultTableModel tableModel = new DefaultTableModel(
new Object[][]{},
new String[]{
"n", "f(n)", "ratio"
});
jTable = new JTable(tableModel);
jscrollPane.setViewportView(jTable);
getContentPane().add(jscrollPane);
setSize(600, 550);
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
/**
* Ajouter la suite de Fibonacci dans le tableau
*/
public void fillTable() {
this.appendLine(0, "1", "");
this.appendLine(1, "1", "");
double prev = 1;
double prevprev = 1;
double val = 0;
Double ratio;
DecimalFormat fmt = new DecimalFormat();
fmt.setMinimumFractionDigits(0);
for (int i = 2; i < 30; i++) {
val = prevprev + prev;
ratio = val / prev;
this.appendLine(i, fmt.format(val), Double.toString(ratio));
prevprev = prev;
prev = val;
}
}
/**
* Ajouter une ligne au JTable
* @param n indice
* @param val f(n)
* @param ratio f(n)/f(n-1)
*/
private void appendLine(int n, String val, String ratio) {
DefaultTableModel tablemodel = (DefaultTableModel) jTable.getModel();
Object[] objects = new Object[3];
objects[0] = n;
objects[1] = val;
objects[2] = ratio;
tablemodel.addRow(objects);
}
/**
* Exemple pour lancer la classe
* @param args
*/
public static void main(String[] args) {
FibonacciSerie jFrame = new FibonacciSerie();
jFrame.fillTable();
}
}