我在Python中创建了一个简单的递归因子函数。目前,我的计算机可以计算最多大约10000的阶乘。对于高于此值的值,python.exe就会停止工作。
所以,我的问题是:如果我想处理更大的因子,我有什么方法可以做到这一点(通过使用多个核心等)?或者只是Python的限制?我已经使用GPU检查了Python脚本,但是这个方法看起来很复杂并且因为我的想法而错综复杂。
我已将递归限制设置为100000,因此不应该是问题。
这是我的代码:
import sys, time
sys.setrecursionlimit(100000)
def f(n):
if n==0:
return 1
else:
return n*f1(n-1)
感谢您的帮助
答案 0 :(得分:0)
我认为主要问题是调用堆栈,如果你不在你的阶乘上使用尾递归,那么堆栈将被填充。我认为这篇文章对你有用。
def f_loop(n):
acum = 1
for i in range(2,n+1):
acum*=i
return acum
Yo可以使用functools.reduce实现这一点。