[Python-es] Segmentation Fault usando Recursión

Chema Cortes pych3m4 en gmail.com
Mar Abr 3 13:05:42 CEST 2012


El día 2 de abril de 2012 20:15, Asdrúbal Iván Suárez Rivera
<asdrubal.ivan.suarez.rivera en gmail.com> escribió:

> Lo subo completo... Estoy haciendo algo similar en C++
>
> Post Data: Tomaré en cuenta tu sugerencia

El error que da es que supera el límite de recursividad, aunque lo
hayas elevado a 300000. El segfault seguramente te sale porque se
agota antes la memoria.

El principal problema que tiene tu algoritmo es que cuando la lista
sólo tiene un elemento no tienes ninguna condición para cortar el
qsort1 (en este caso, greater<--lista sin parar).

Otro problema es que estás introduciendo un nuevo elemento ('pivot')
que no estaba en la lista original. Deberías sacar el pivote de la
lista antes de separar los elementos entre lesser y greater. Una
recomendación: cuando calcules la mediana, devuelve el índice al
elemento, no el elemento en sí.

Te podría dar alguna sugerencia más de estilo, como que intentes que
el return de las funciones sea la última sentencia del bloque. El
return del final del qsort1 despista mucho hasta que te das cuenta que
nunca se ejecuta.



-- 
Hyperreals *R: http://ch3m4.org/blog
Quarks, bits y otras criaturas infinitesimales


Más información sobre la lista de distribución Python-es