我的递归程序在计算整数的整数分区数时遇到了一些问题。
这是我写的:
def p(k, n):
if k > n:
return 0
if k == 1:
return 1
else:
return (p(k+1, n) + p(k, n-k))
def partitions(n):
ans = 1
for k in range(1, n/2):
ans += p(k, n-k)
return ans
这个算法是从维基百科的文章Partition (number theory)中实现的。这是我的程序为前几个整数输出的内容:
partitions(0) = 1
partitions(1) = 1
partitions(2) = 1
partitions(3) = 1
partitions(4) = 2
partitions(5) = 2
partitions(6) = 2
partitions(7) = 2
我不确定为什么我的程序不能正常运行,因为我认为我正确地实现了递归和来自维基百科的算法。有人可以帮我理解它在做什么吗?