提高查找大数阶乘的性能

我使用迭代和递归方法来实现阶乘,但是当为大数找到相同的阶乘时,需要花费大量的时间。有什么方法可以改变这一点吗?

# 回答1


我明白你的问题,计算阶乘的问题有一个高度重复的结构。您可以使用动态编程来解决您的问题。实现动态规划的条件是
重叠子问题
最优子结构
这里有一个代码,它可能会帮助你理解我想说的话

选择 | 换行 | 行号
  1. def DPfact(N):
  2.     arr={}
  3.     if N in arr:
  4.         return arr[N]
  5.     elif N == 0 or N == 1:
  6.         return 1
  7.         arr[N] = 1
  8.     else:
  9.         factorial = N*DPfact(N - 1)
  10.         arr[N] = factorial
  11.     return factorial
  12.  
  13. num=int(input("Enter the number: "))
  14.  
  15. print("factorial of ",num," (dynamic): ",end="")
  16. print(DPfact(num))

为了更清楚地了解阶乘从基础到如此高级的水平,

# 回答2


谢谢你,这对我有帮助
# 回答3


用C实现的数学模块阶乘比递归调用更快。

选择 | 换行 | 行号
  1. import math
  2. num=int(input("Enter the number: "))
  3. print(math.factorial(num))
# 回答4


这里是内置的阶乘算法,如果有人感兴趣的话
Https://hg.python.org/cpython/file/7...module.c#l1218

标签: python

添加新评论