Iniciando mi sección de Programación Lógica en el IDE Swi-prolog, donde ire publicando ejercicios resueltos implementados en Prolog. En esta ocasion les voy a compartir ejercicios relacionados con la Sucesión de Fibonacci, Potencia y Factorial de un numero.
Sucesion de Fibonacci:
La Sucesión de fibonacci es una sucesión infinita de números, donde cada termino esta dado por la suma de los dos anteriores, empezando en 1,1, y luego la sumas.,
1,1,2,3,5,8,13,21,34,..
y bueno sin mas redondeo aqui el código, en la compilacion ingresamos el N° de Termino que deseamos mostrar. ejemplo: fibonacci(7,X).
- % Autor: Joel Fernandez
- % Fecha: 16/04/2014
- fibonacci(0,0).
- fibonacci(1,1).
- fibonacci(N,Y):-N>1,
- N1 is N-1,
- fibonacci(N1,Y1),
- N2 is N-2,
- fibonacci(N2,Y2),
- Y is Y1+Y2.
Ejercicio propuesto:
Usando recursividad, listar y sumar la serie de Fibonacci
Usaremos una regla con 3 argumentos a la que llamaremos serieFibonacci(X,L,S), donde X sera la cantidad de terminos que queremos mostrar, L la lista con los terminos y S la suma de todos los terminos.
- % Autor: Joel Fernandez
- % Fecha: 29/05/2014
- % usando recurswividad listar, sumar la serie de fibonacci
- concatenar([],L,L).
- concatenar([A|Ca],L2,[A|Cc]):- concatenar(Ca,L2,Cc).
- fibonacci(0,0).
- fibonacci(1,1).
- fibonacci(N,Y):-N>1,N1 is N-1,fibonacci(N1,Y1),N2 is N-2,fibonacci(N2,Y2),Y is Y1+Y2.
- serieFibonacci(0,[0],0).
- serieFibonacci(1,[1],1).
- serieFibonacci(Nt,L,S):- Nt>1,fibonacci(Nt,P),N1 is Nt-1,serieFibonacci(N1,Ls,Ss),concatenar(Ls,[P],L),S is Ss+P.
Consultamos ?- serieFibonacci(5,L,S).
Respuesta:
L=[1,1,2,3,5].
S=12.
Factorial de un numero:
- %----- factorial ------
- factorial(0,1).
- factorial(N,_):- N<0,!,fail.
- factorial(N,F):-mayor(N,0), diferencia(N,1,N1),
- factorial(N1,F1), producto(N,F1,F).
- mayor(X,Y):- X>Y.
- diferencia(X,Y,Z):- Z is X-Y.
- producto(X,Y,Z):- Z is X*Y.
Potencia de un Numero:
- % Autor: Joel Fernandez
- % Fecha: 17/04/2014
- potencia(A,0,1):- A =\=0. % validamos que A se a diferente de 0 pues 0^0 es indeterminado.
- potencia(X,Y,P ):- Y>0,Y1 is Y-1, %regla de potencia ejemplo potencia(3,2,X). Rpta=9
- potencia(X,Y1,P1 ),
- P is X*P1.
por ahora solo pondré estos tres mas adelante ire publicando muchos mas espero les sirva.
SOCIALIZA ESTO →