Documentos de Académico
Documentos de Profesional
Documentos de Cultura
MATERIA
PROGRAMACION LOGICA Y FUNCIONAL
TITULO
PRÁCTICA: RECURSIVIDAD EN PROLOG.
GRUPO
7SB
ELY ISMAEL MAAS CAHUM
JESUS OSMAR AHUMADA OXTE
VICTOR AARON BAAS AVILES
DOCENTE
ING. LARISSA PENICHE
antecesor_de(X,Y):-padre_de(X,Z),%abuelo
padre_de(Z,Y).
antecesor_de(X,Y):-padre_de(X,Z1),%bisabuelo
padre_de(Z1,Z2),
padre_de(Z2,Y).
?- ?- padre_de(X,Y).
antecesor_de(cristino,Y). X = cristino,
Y = clotilde ; Y = clotilde ;
Y = david ; X = clotilde,
Y = ely. Y = david ;
X = david,
Ejercicio 2. ¡Investigue las funciones Fibonacci y n!. Estudie su estructura,
Pruebe cada una en su compilador. Documente la función indicando la
condición(es) de paro y la(s) parte(s) recursiva de la función.
Funcion Fibonacci
fib(0,0).%Detener
fib(1,1).%Detener
fib(N,NF):- %Recursa el primer dato de la posición y el segundo es el valor
en la posición
N>1,%Numero mayor a 1
Z is N-1, fib(Z,Nu),
Y is N-2, fib(Y,M), Resultado
NF is Nu+M.
Recursividad
factorial(0,1).%inicialización
factorial(N,F):-%Variables de entrada y salida respectivamente
( N>0,
( N1 is N-1, %decremento
factorial(N1,F1),%Primera variable entrada, la segunda salida
F is N*F1 % valores que va a tomar F
);
write('N debe ser mayor a 0')
).:
Resultado
?- factorial(5,V).
V = 120 .
?- factorial(2,V).
V=2
Ejercicio 3. amiga. Defina una BH con el functor amiga/2. Escriba una función
recursiva que encuentre a mis amigas, sabiendo que las amigas de mis amigas
son mis amigas.
amig(io,victoria). %unica amiga(solo victoria)
amig(victoria,dani). %amigas de victoria
amig(victoria,jessica). %amigas de victoria
amig(victoria,alma). %amigas de victoria
amig(osmara,lala). %amigas de Osmara
amig(osmara,megan). %amigas de Osmara
amig(osmara,windy). %amigas de Osmara
?- amigas(io,X).
X = victoria ;
X = dani ;
X = jessica ;
X = alma ;
1. Ejercicio 4. Mis funciones. Encuentre al menos 2 funciones propias de
Prolog para manejo de listas (append, length, last, sum_list, member, last) y
escribe TUS PROPIAS funciones recursivas. Recuerda documentar % y
usar nombres de variables ilustrativos.
2. Pruebe sus funciones. Tome evidencias de al menos dos corridas de cada
función diseñada.
antecesor_de(X,Y):-padre_de(X,Z),%abuelo
padre_de(Z,Y).
antecesor_de(X,Y):-padre_de(X,Z1),%bisabuelo
padre_de(Z1,Z2),
padre_de(Z2,Y).
?- padre_de(X,Y).
?-
antecesor_de(cristino,Y). X = cristino,
Y = clotilde ; Y = clotilde ;
Y = david ; X = clotilde,
Y = ely. Y = david ;
X = david,
Ejercicio 2. ¡Investigue las funciones Fibonacci y n!. Estudie su estructura,
Pruebe cada una en su compilador. Documente la función indicando la
condición(es) de paro y la(s) parte(s) recursiva de la función.
Funcion Fibonacci
fib(0,0).%Detener
fib(1,1).%Detener
fib(N,NF):- %Recursa el primer dato de la posición y el segundo es el valor
en la posición
N>1,%Numero mayor a 1
Z is N-1, fib(Z,Nu),
Y is N-2, fib(Y,M), Resultado
NF is Nu+M.
Recursividad
factorial(0,1).%inicialización
factorial(N,F):-%Variables de entrada y salida respectivamente
( N>0,
( N1 is N-1, %decremento
factorial(N1,F1),%Primera variable entrada, la segunda salida
F is N*F1 % valores que va a tomar F
);
write('N debe ser mayor a 0')
).:
Resultado
?- factorial(5,V).
V = 120 .
?- factorial(2,V).
V=2
Ejercicio 3. amiga. Defina una BH con el functor amiga/2. Escriba una función
recursiva que encuentre a mis amigas, sabiendo que las amigas de mis amigas
son mis amigas.
amig(io,victoria). %unica amiga(solo victoria)
amig(victoria,dani). %amigas de victoria
amig(victoria,jessica). %amigas de victoria
amig(victoria,alma). %amigas de victoria
amig(osmara,lala). %amigas de Osmara
amig(osmara,megan). %amigas de Osmara
amig(osmara,windy). %amigas de Osmara
?- amigas(io,X).
X = victoria ;
X = dani ;
X = jessica ;
X = alma ;
antecesor_de(X,Y):-padre_de(X,Z),%abuelo
padre_de(Z,Y).
antecesor_de(X,Y):-padre_de(X,Z1),%bisabuelo
padre_de(Z1,Z2),
padre_de(Z2,Y).
?- padre_de(X,Y).
?-
antecesor_de(cristino,Y). X = cristino,
Y = clotilde ; Y = clotilde ;
Y = david ; X = clotilde,
Y = ely. Y = david ;
X = david,
Funcion Fibonacci
fib(0,0).%Detener
fib(1,1).%Detener
fib(N,NF):- %Recursa el primer dato de la posición y el segundo es el valor
en la posición
N>1,%Numero mayor a 1
Z is N-1, fib(Z,Nu),
Y is N-2, fib(Y,M), Resultado
NF is Nu+M.
Recursividad
factorial(0,1).%inicialización
factorial(N,F):-%Variables de entrada y salida respectivamente
( N>0,
( N1 is N-1, %decremento
factorial(N1,F1),%Primera variable entrada, la segunda salida
F is N*F1 % valores que va a tomar F
);
write('N debe ser mayor a 0')
).:
Resultado
?- factorial(5,V).
V = 120 .
Ejercicio 3. amiga. Defina una BH con el functor amiga/2. Escriba una función
?- factorial(2,V).
recursiva que encuentre a mis amigas, sabiendo que las amigas de mis amigas
son misV=2amigas.
amig(io,victoria). %unica amiga(solo victoria)
amig(victoria,dani). %amigas de victoria
amig(victoria,jessica). %amigas de victoria
amig(victoria,alma). %amigas de victoria
amig(osmara,lala). %amigas de Osmara
amig(osmara,megan). %amigas de Osmara
amig(osmara,windy). %amigas de Osmara
?- amigas(io,X).
X = victoria ;
X = dani ;
X = jessica ;
X = alma ;