我试图找到给定n - 数的整数分区数。如果我有n == 4
,答案应为5,因为:
4 = 1+1+1+1
4 = 2+1+1
4 = 3+1
4 = 2+2
4 = 4
我的代码工作正常,但问题是它在很长一段时间内都是大数字。我不知道如何优化我的代码。也许你可以帮助我加快速度?
def get_answer(n):
if n == 0:
yield []
return
for p in get_answer(n-1):
yield [1] + p
if p and (len(p) < 2 or p[1] > p[0]):
yield [p[0] + 1] + p[1:]
number_of_partitions=lambda n:sum(1 for _ in get_answer(n))