处理繁重的Python脚本

时间:2016-11-09 15:27:34

标签: python recursion optimization

我在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)

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

我认为主要问题是调用堆栈,如果你不在你的阶乘上使用尾递归,那么堆栈将被填充。我认为这篇文章对你有用。

What is tail recursion?

def f_loop(n):
    acum = 1 
    for i in range(2,n+1):
        acum*=i
    return acum

Yo可以使用functools.reduce实现这一点。