
Hugo Gómez
PreguntaAlguien sabe por qué me crashea?

Pablo Antipan Quiñenao
Hola! Uso un Ryzen 5 4500u 16GB RAM. Tome n = 200.000 y con setrecursionlimit ( 10000000000 ), que es 10^3 veces lo que seteaste tu; se exeden el size de dato para integer jaja.
from time import time import sys print(sys.getrecursionlimit()) print(sys.setrecursionlimit(10000000000)) 10000000 10000000000 def hello_world(): print("Hello World!") def facto(n): if n == 1: return 1 return n * facto(n - 1) def run(): # hello_world() n = 200000 print("result:", facto(n), "\n") if __name__ == "__main__": start = time() run() end = time() print("delta t:", end - start)
Espero te sirva de feedback! :)
Saludos!

Hugo Gómez
Ya está implementado ("sys.setrecursionlimit(10000000)"), me parece raro que otras pc's menos potentes que las mía puedan hacerlo, pero creo que es por un error de memoria por estar usando linux tal vez, encontré esto https://stackoverflow.com/questions/19641597/what-is-segmentation-fault-core-dumped
"Segmentation fault" means that you tried to access memory that you do not have access to.
Supongo que es por eso

Raúl Eduardo Espinoza Becerra
Efectivamente como dice Pablo, es por la cantidad de recursividad que se esta ejecutando en ese momento. Para que puedas intentarlo aumenta la cantidad de recursividad en python con un metodo.
import sys print(sys.getrecursionlimit())
Aca esta un ejemplo, con ello podras ejecutarlo sin problema.
Me comentas si te sirvio.
Saludos!!.

Pablo Antipan Quiñenao
Hola! Porque para tu maquina, al pedirle el factorial de 200.000; ya no puede y entonces Python corta antes que "explote" todo. O sea, se protege para no colapsar el sistema.
Saludos!