Beruflich Dokumente
Kultur Dokumente
Sucesión de Fibonacci
( )
( ) ( )
Por lo tanto se deben sumar los elementos mediante un bucle que debe ejecutarse desde 2 hasta
n. Cada iteración debe guardar el último y el penúltimo término, para lo que se usan dos variables,
a las que irán cambiando sus valores. El sub algoritmo aceptará como entrada una variable entera
y devolverá un valor también entero.
Para realizar el cálculo de los números de la sucesión de Fibonacci usaremos dos técnicas,
Programación Dinámica y Exponenciación sobre una matriz 2x2.
Programación Dinámica
int a = 0;
int b = 1;
int c = 1;
if (n<=1){
return n;
}
for (int i=1; i<n; i++){
c = a+b;
a = b;
b = c;
}
return c;
}
Pseudocódigo del algoritmo
fin_desde
escribir (n)
fin
El algoritmo está basado en la siguiente identidad (que puede ser probada por inducción
matemática)
( ) ( )
Por lo que la matriz [1, 1, 1, 0] se multiplica “n” veces, siendo equivalente al número “n” que se
quiera calcular de la sucesión de Fibonacci, al terminar, el número ubicado en la posición 0 será el
resultado.
package fibonacci;
import java.math.BigInteger;
import java.util.Stack;
public class fibonacci {
BigInteger[][] M = new
BigInteger[][]{{BigInteger.ONE,BigInteger.ONE},{BigInteger.ONE,BigInteger.ZERO}}
;
BigInteger two = new BigInteger("2");
while(!potenciaStack.isEmpty()){
BigInteger p = potencia.pop();
multiplicar(M, M);
if(p.mod(two).equals(BigInteger.ONE)){
multiplciar(M, FIB_M);
}
}
// System.out.println(M[1][0]);
return M[1][0];
}
m[0][0] = a; m[0][1] = b;
m[1][0] = c; m[1][1] = d;
}
}
Pseudocódigo del algoritmo
pila potencia
mientras (n > 0)
agregar n a la pila
n = n/2
a = m[0][0]*( n[0][0])+(m[0][1]*(n[1][0]));
b = m[0][0]*( n[0][1])+(m[0][1]*(n[1][1]));
c = m[1][0]*( n[0][0])+(m[1][1]*(n[1][0]));
d = m[1][0]*( n[0][1])+(m[1][1]*(n[1][1]));
m[0][0] = a; m[0][1] = b;
m[1][0] = c; m[1][1] = d;
https://www.codechef.com/wiki/tutorial-dynamic-programming
https://www.nayuki.io/page/fast-fibonacci-algorithms
https://www.geeksforgeeks.org/program-for-nth-fibonacci-number/
http://blog.gomox.com.ar/2008/11/prueba-source-higlight.html
http://kukuruku.co/hub/algorithms/the-nth-fibonacci-number-in-olog-n