Hola, me ayudan con este error? . Factoial Iterativo: 0.03124260902404785 Traceback (most recent call last): File “C:\Users\saidm\Downloa...

Said Muñoz Chávez

Said Muñoz Chávez

Pregunta
student
hace 5 años

Hola, me ayudan con este error?

.

Factoial Iterativo: 0.03124260902404785

Traceback (most recent call last):

File “C:\Users\saidm\Downloads\strings.py”, line 19, in factorial_r

return (n * factorial_r(n-1))

File “C:\Users\saidm\Downloads\strings.py”, line 19, in factorial_r

return (n * factorial_r(n-1))

File “C:\Users\saidm\Downloads\strings.py”, line 19, in factorial_r

return (n * factorial_r(n-1))

[Previous line repeated 997 more times]

MemoryError: Stack overflow

[Finished in 0.145s]

.

.

Las especificaciones de mi compu están aqui:

https://drive.google.com/file/d/1B1QDSQLDGSnISkkRKY9EMUgQ8Tb-nDlg/view?usp=sharing

.

.

Mi código es este:

import time import sys sys.setrecursionlimit(10**5 ) def factorial(n): resp = 1 while n > 1: resp *= n n -= 1 return resp def factorial_r(n): if n == 1: return 1 return (n * factorial_r(n-1)) if __name__ == "__main__": n = 8000 ini = time.time() factorial(n) fin = time.time() print(f"Factoial Iterativo: {fin - ini}") ini = time.time() factorial_r(n) fin = time.time() print(f"Factoial Recursivo: {fin - ini}")
4 respuestas
para escribir tu comentario
    Said Muñoz Chávez

    Said Muñoz Chávez

    student
    hace 5 años

    Pues ya instale python de 64 bits y nada, en PyCharm me da esto:

    Factoial Iterativo: 0.005984067916870117

    Process finished with exit code -1073741571 (0xC00000FD)


    y ya actualicé mi código para que ahora inicie así:

    import time import sys

    sys.setrecursionlimit(50000)

    Luis Lira

    Luis Lira

    student
    hace 5 años

    @Saidmc es un caso curioso, si lo ejecuto en mi PC simplemente no corre esa parte del script pero no me lanza ningún error. Mi PC tiene un Ryzen 5 3400G y 16Gb de Ram.

    ¿Instalaste el Python de 32 o el de 64 bits? Por lo que leí, el Python de 32 bits sólo puede acceder a 4GB de Ram,

    Said Muñoz Chávez

    Said Muñoz Chávez

    student
    hace 5 años

    ya lo tiene mi código sys.setrecursionlimit(10**5 )

    Luis Lira

    Luis Lira

    student
    hace 5 años

    Hola @Saidmc, es error es debido a que Python por defecto sólo permite realizar un aproximado de 1000 iteraciones de manera recursiva, luego de eso falla automáticamente para evitar algún problema.   Hay una forma de cambiar ese límite, sólo debes importar el módulo

    sys
    y usar el método
    setrecursionlimit
    de la siguiente manera:
    import sys
    sys.setrecursionlimit(50000)

Curso de POO y Algoritmos con Python

Curso de POO y Algoritmos con Python

Comprende la eficiencia algorítmica con Python. Analiza complejidad temporal y espacial, visualiza resultados y resuelve problemas de optimización. Ideal para desarrollar habilidades esenciales en el análisis de algoritmos.

Curso de POO y Algoritmos con Python
Curso de POO y Algoritmos con Python

Curso de POO y Algoritmos con Python

Comprende la eficiencia algorítmica con Python. Analiza complejidad temporal y espacial, visualiza resultados y resuelve problemas de optimización. Ideal para desarrollar habilidades esenciales en el análisis de algoritmos.