以有效的方式查找整数分区的数量

时间:2017-07-30 05:07:10

标签: python python-3.x

我试图找到给定n - 数的整数分区数。如果我有n == 4,答案应为5,因为:

  1. 4 = 1+1+1+1
  2. 4 = 2+1+1
  3. 4 = 3+1
  4. 4 = 2+2
  5. 4 = 4
  6. 我的代码工作正常,但问题是它在很长一段时间内都是大数字。我不知道如何优化我的代码。也许你可以帮助我加快速度?

    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))
    

0 个答案:

没有答案