0

I am trying to find number of integer partitions of given n - number. If I have n == 4, the answer should be 5 because:

  1. 4 = 1+1+1+1
  2. 4 = 2+1+1
  3. 4 = 3+1
  4. 4 = 2+2
  5. 4 = 4

My code works properly but the matter is that it counts big numbers for a very long time. I have no idea how to optimize my code. Maybe you can help me to make it faster?

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))
miradulo
  • 28,857
  • 6
  • 80
  • 93
Nikita.K
  • 5
  • 1
  • 4

0 Answers0