繁体   English   中英

Python 使用递归的阶乘

[英]Python factorial using recursion

我试图在 Python 3.6 中使用递归来找到大量的阶乘。 尽管我已将递归限制设置为 10**9,但仍然运行代码会使 kernel go 死机。 我知道迭代解决方案要好得多,但我想知道原因

import sys
mod = 10**9+7
sys.setrecursionlimit(10**9) 
def fac(n):
    if(n == 1):
        return 1
    return (fac(n-1)%mod*n%mod)%mod 
print(fac(10000))

计算如此大的数的阶乘会导致堆栈 memory 溢出,因为每当我们应用递归时,所有递归调用都会让它们自己的 memory 相互堆叠。

因此对于这么大的数字,递归堆栈随着递归调用而变得越来越大,导致堆栈溢出

这就是为什么 Kernel 模具没有产生任何结果的原因

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM