Todo lo necesario para sobrevivir en la carrera de Ing. en Informática, Vespertino

23 abr 2007

Serie de Fibonacci en Java


El aporte de Leonardo de Pisa (más conocido como Fibonacci) a la matemática es tan grande y tan profundo que prácticamente no puede ser medido. Fue el quien trajo los números, como los conocemos, a la cultura occidental. Antes de él, se usaban los números romanos, que no tienen 0. Su libro "De quadratis numeris" (1225) es tan avanzado que hubo que esperar a Fermat (en el siglo XVII) para superarlo.
Sin embargo, Fibonacci es mucho más conocido por descubrir la sucesión de Fibonacci, una sucesión de números que existe en la naturaleza. La serie de Fibonacci es la siguiente:

1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377,...

Obtención


Se obtiene mediante la siguiente función recursiva:


F(n)=   \begin{cases}     0             & \mbox{si } n = 0; \\     1             & \mbox{si } n = 1; \\     F(n-1)+F(n-2) & \mbox{si } n > 1. \\      \end{cases}

O sea, que se empieza con 0 y 1, y luego cada número es la suma de los dos anteriores.





Pseudo código


La forma de calcular la serie de Fibonacci en computación, es la siguiente;

Para calcular el Fibonacci de "n" vamos a sumar f(n-1) + f(n-2)
Asumiendo que a=f(n-1) y b=f(n-2) entonces f(n) = a + b
Como
f(0) = 0
f(1) = 1
si "n mayor que 2" realizamos un ciclo hasta "n" y vamos calculando uno por uno

En pseudocodigo

pedir (n)
si n=0 entonces resultado = 0
si n=1 entonces resultado = 1

condicional: si n > 2 entonces

a=0
b=1

repetir desde (i=2 hasta n)
a = a + b *** Fibonacci de i - 1
b = a + b *** Fibonacci de i
fin de repetir
fin del condicional

resultado = b

16 comentarios:

Unknown dijo...

MUCHAS GRACIAS MUY BIEN EXPLICADO.

Angelo dijo...

GRACIAS. JUSTO TENGO UNA TAREA PARA MAÑANA DE JAVA, Y NECESITABA EL CODIGO PARA FIBONACCI. ME AYUDASTE CON UN RAMO XD.

jorge dijo...

muchas gracias por el psudo codigo de la serie fibonacci, nos gustaria saber sobre estos otros puntos de la serie fibonacci.

- Tabla de Requerimientos
- Diagrama de Clases
- Responsabilidades de las Clases
 Un contrato por C/Clase

Se le agradece cualquier Ayuda.

jorge dijo...

muchas gracias por el psudo codigo de la serie fibonacci, nos gustaria saber sobre estos otros puntos de la serie fibonacci.

- Tabla de Requerimientos
- Diagrama de Clases
- Responsabilidades de las Clases
 Un contrato por C/Clase

Se le agradece cualquier Ayuda.

jorge dijo...

muchas gracias por el psudo codigo de la serie fibonacci, nos gustaria saber sobre estos otros puntos de la serie fibonacci.

- Tabla de Requerimientos
- Diagrama de Clases
- Responsabilidades de las Clases
 Un contrato por C/Clase

Se le agradece cualquier Ayuda.

Anónimo dijo...

int valorx=c.leeInt("Ingrese el valor de X ");
if(valorx>=2){
int a=1;
int b=0;
int total=0;
for(int i =0;i<=valorx;i++){
total=a+b;
a=b;
b=total;
c.imprime(total+", ");
}
}else{
c.imprime("Error :( ");

Anónimo dijo...

simplemente EXCELENTE..!!

Anónimo dijo...

gracias justo ahora estaba buscando una tarea explican de una manera facil, agradable y sencilla
¡¡¡felicitaciones de mi parte!!!

Anónimo dijo...

oiga si ban a publicar ejercicios hagalos bn

Anónimo dijo...

ESTA MUY BIEN EXPLICADO PERO AL MOMENTO DE PONERLO EN PSEINT ME DICE QUE LA VARIABLE B NO ESTA INICIALIZADA¿QUE PODRA SER??
GRACIAS

Cainista dijo...

Interesante PSaint.
El fds lo reviso y te cuento que pasa

sal2

koko dijo...

En pseudocodigo yo la tengo asi m podrian decir si esta bien o no??

var: a, b, cont:entero

pedir (n)

cont=0
b=1

mientras cont < n hacer

a=b
b=1
cont=a+b
imprimir(cont)
fin mientras

El Perdedor dijo...

solo quisiera saber como se haria con codigo de escritorio de java

Anónimo dijo...

hola estoy buscando lo mismo nos mandaron a aser un algoritmo sobre la regla de fibonacci soy primeriso en esto y nesecito que alguin me ayude no entiendo mucho por eso si lo pudieran explicar un poco mejor gracias

Anónimo dijo...

esto es ley:
Fibonacci asta el numero que introduzcas.


public class e_1_61 {

public static void main (String args[]) {
int x,a=0,b=1,c=0,d=0;
System.out.println("Introduce un numero");
x=Leer.entero();


while(c<=x||d<=x){

c=a;
d=b;
System.out.println(+c); //fuck yeahhh!
System.out.println(+d);
a=a+b;
b=b+a;
c=a;
d=b;
}




}
}

Allistter dijo...

gracias por despejarme la duda es que me salia la serie pero con los numeros desfazados