Resumen

A continuación te dejo el código con una corrección en el returnde la función recursiva:

import time def factorial(n): respuesta = 1 while n > 1: respuesta *= n n -= 1 return respuesta def factorial_r(n): if n == 1: return 1 return n * factorial_r(n - 1) if __name__ == '__main__': n = 200000 comienzo = time.time() factorial(n) final = time.time() print(final - comienzo) comienzo = time.time() factorial_r(n) final = time.time() print(final - comienzo)