23-08-2014, 16:11
Hola compañeros, cómo están?
Tengo una duda con un ejercicio en el que debo aplicar recursividad y me está dando muchos dolores de cabeza.
El punto pide calcular el tiempo de un viaje (es decir, sumar el tiempo de las escalas y los tramos).
Me encuentro calculando el tiempo de las escalas pero el resultado que me devuelve es incorrecto. Este es el código.
Haciendo esta prueba, me devuelve estos resultados:
50 ?- tiempoDeEscalas([escala(kualaLumpur,0), tramo(9), escala(capeTown,2), tramo(15), escala(buenosAires,0)],T).
T = 4 ;
T = 4 ;
T = 2 ;
T = 2 ;
T = 2 ;
T = 2 ;
T = 0 ;
T = 0 ;
T = 6 ;
T = 6 ;
T = 4 ;
T = 4 ;
T = 4 ;
T = 4 ;
T = 2 ;
T = 2 ;
T = 4 ;
T = 4 ;
T = 2 ;
T = 2 ;
T = 2 ;
T = 2 ;
T = 0 ;
T = 0.
Lo que quiero aplicar es lo que vimos en clase: sumar la cabeza + la cola aplicando una definición recursiva, pero no sé muy bien dónde estoy fallando.
Muchas gracias!!
Tengo una duda con un ejercicio en el que debo aplicar recursividad y me está dando muchos dolores de cabeza.
El punto pide calcular el tiempo de un viaje (es decir, sumar el tiempo de las escalas y los tramos).
Me encuentro calculando el tiempo de las escalas pero el resultado que me devuelve es incorrecto. Este es el código.
%vuelo(Codigo de vuelo, capacidad en toneladas, [lista de destinos] ).
vuelo(arg845, 30, [escala(rosario,0), tramo(2), escala(buenosAires,0)]).
vuelo(mh101, 95, [escala(kualaLumpur,0), tramo(9), escala(capeTown,2), tramo(15), escala(buenosAires,0)]).
tiempoTotalVuelo(Vuelo,Destinos):- vuelo(Vuelo,_,Destinos).%, tiempoDeEscalas(Destinos,TiempoEscalas).
tiempoDeEscalas([],0).
tiempoDeEscalas([X|Xs],TiempoEscalas):- member(escala(Ciudad,Tiempo),[X|Xs]), tiempoDeEscalas(Xs,TiempoTail),
TiempoEscalas is Tiempo + TiempoTail.
Haciendo esta prueba, me devuelve estos resultados:
50 ?- tiempoDeEscalas([escala(kualaLumpur,0), tramo(9), escala(capeTown,2), tramo(15), escala(buenosAires,0)],T).
T = 4 ;
T = 4 ;
T = 2 ;
T = 2 ;
T = 2 ;
T = 2 ;
T = 0 ;
T = 0 ;
T = 6 ;
T = 6 ;
T = 4 ;
T = 4 ;
T = 4 ;
T = 4 ;
T = 2 ;
T = 2 ;
T = 4 ;
T = 4 ;
T = 2 ;
T = 2 ;
T = 2 ;
T = 2 ;
T = 0 ;
T = 0.
Lo que quiero aplicar es lo que vimos en clase: sumar la cabeza + la cola aplicando una definición recursiva, pero no sé muy bien dónde estoy fallando.
Muchas gracias!!