我想确定n的阶乘升到同一次方是更大还是(n的阶乘升到n次方)。你知道吗
这是我的Python代码。你知道吗
def whichIsLarger():
def fact(n):
assert type(n) == int
if n == 0 or n == 1:
return 1
else:
return n * fact(n-1)
print max( fact(n**n), fact(n)**fact(n) )
此代码是否正确执行(即不产生任何语义错误)?你知道吗
有没有办法不给变量n赋值就测试这个代码?你知道吗
我的意思是,我希望Python为我做一个一般的比较(即数学或代数的osrt),而不仅仅是通常的算术比较,例如,将值8赋给整数n会产生效果。你知道吗
Python中是否有用于计算阶乘的内置函数?你知道吗
如果我们把阶乘函数写在whichIsLarger函数的内部或外部,有什么区别?你知道吗
但是你很快就会发现数字变得惊人的巨大,你花了很长时间等待,这并没有证明什么,因为你可能会得到一个不同的结果。你知道吗
相反,你需要象征性地接近它。我建议使用Stirling's approximation-as
n -> +inf
,n! -> (n/e)**n * (2pi * n)**0.5
另一种方法是使用
sympy
符号数学包:你可以直接使用这些方程,比如
产生
或者象征性的,比如
产生
(也就是说,
(n**n)!
将变得比n! ** n!
无限大。)你可能想看看数学,看看会爆炸成那样的东西。天真地做这件事意味着你的代码要花很长时间才能执行,如果n开始变大,你会重复很多东西。如果你能得到n-1和n之间的关系,你可能会发现你可以清除很多工作
尽管如此,这里有一些简单的代码可以让您开始使用,但是如果可以的话,您会希望尝试简化它
编辑
递归很糟糕,尤其是在python上:
相关问题 更多 >
编程相关推荐