Python - Python Pilas

   
Vista:

Python Pilas

Publicado por Lara (1 intervención) el 10/11/2008 13:58:02
Hola a todos, tengo que hacer un ejercicio de Python sobre pilas de manera recursiva, concretamente si tengo una pila tengo que girarla, es decir, el numero que estaba en la cima de la pila original que en la otra pila este abajo del todo: ejemplo Pila P--> [3|4|2|1 Pila Q--> [1|2|4|3

lo que hago es lo siguiente:

from pila import *

def GirarPila(p,q):
if esVacia(p):
q=q
else:
x=cima(p)
GirarPila(desapilar(p), apilar(int(x), q))
return q

**NOTA: Las funciones "esVacia", "desapilar", "cima" y "apilar", ya me viene definidas un archivo pila.pyc

El problema me viene que de hacerlo de manera recursiva, cuando p esta vacia me da bien el resultado: [1|2|4|3 pero al ser recursiva, al final de todo me da que la pila q esta vacia.
q [

Alguien me podria ayudar le estaria muy agradecida.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Python Pilas

Publicado por agrelot (2 intervenciones) el 11/11/2008 23:34:58
Entrá acá http://www.python.com.ar/
y suscribite a su lista. Está llena de capos.
Un beso
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Python Pilas

Publicado por hadrien (10 intervenciones) el 17/11/2008 12:13:40
Las funciones recursivas sólo devuelven los valores cuando llegan al caso inicial, que es el que pone fin a la recursividad. Para tu código este caso es cuando la pila está vacía.
De entrada partimos con los siguientes datos:
Pila P --> [3|4|2|1]
Pila Q --> nulo

Cuando P esté vacía simplemente debes devolver Q tal y como está, es decir, Q--> [1|2|4|3]

Vigila que la indentación sea correcta, es fundamental en Python. (te lo indico con _)

def GirarPila(p,q):
_if esVacia(p):
__return q
_else:
__top=cima(p)
__GirarPila( desapilar(p), apilar( int(top), q) )
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar