【发布时间】:2018-09-24 10:28:53
【问题描述】:
我在 Wikipedia 上发现 C(n,k) = (n-k+1)/k * C(n, k-1)。 我自己做了证据,并得到它是正确的。然后我在我的函数中实现了它,假设使用递归计算组合而不达到python中的内置限制。这很好用.. 直到我投入大量资金。这是我的功能:
def choose(n, k):
if not k:
return 1
elif n < k:
return 0
else:
return int((((n - k + 1) / k)) * choose(n, (k - 1)))
如果您使用较小的数字(例如choose(1000, 4)),它会起作用,但是如果您尝试使用诸如choose(1000,800) 之类的数字,它将正确返回前13 个数字,但随后就会出错。这是怎么发生的,更重要的是,你是怎么解决的?
【问题讨论】:
-
如果您的目标是计算 nCr,这是否相关? stackoverflow.com/questions/4941753/…?
-
这似乎是
floating 点精度的常见问题。
标签: python recursion combinations