【发布时间】:2014-10-15 17:12:27
【问题描述】:
我必须定义一个接受两个数字的函数:n 和 k (n >= k),并返回这两个数字的二项式系数。
#defining a function that computes the factorial of an integer
def fac(b):
if b==1:
return 1
else:
return b * fac(b-1)
#takes two integers and does the binomial coefficient operand
def combinations(n,k):
result = (fac(n)) / (fac(k) * fac(n-k))
return result
n=10
k=2
print(combinations(n,k))
这适用于小数字,但当我采用较大的数字(例如 1000 等)时,它就不起作用了。 它返回: fac 中的第 5 行 return b * fac(b-1) 几次。 后跟:RuntimeError:比较超出最大递归深度。
有人能解释一下为什么这些函数不适用于大数字,或许可以提供一些关于我可以做些什么来解决这个问题的提示吗? python如何处理递归和大数?
【问题讨论】:
-
更好的解决方案是使用伽玛函数自然对数中的双精度数,避免递归和整数。
-
请不要同时问两个完全不相关的问题。
-
“它不起作用”是什么意思?太慢了?超出递归深度?还有什么?
-
我是编程新手,函数必须是递归的。
-
@uselpa 它返回:第 5 行在 fac 返回 b * fac(b-1) 几次。后跟:RuntimeError:比较中超出最大递归深度
标签: python python-3.x recursion combinations