我在某处在线找到了这段代码,我试图弄清楚它是如何工作的。您为 partitions() 函数提供一个整数,代码返回不包括重复数字的不同分区的数量(例如 n = 5 -> 2 个分区 (3,2) & (4,1))。我想了解这个递归解决方案究竟是如何管理这个的。我一直在玩弄代码,跟踪递归调用,但我仍然不太明白它是如何工作的。请帮我理解。
def partitions(n):
memo = [[0 for _ in range(n + 2)] for _ in range(n + 2)]
return bricks(1, n, memo) - 1
def bricks(h, l, memo):
if memo[h][l] != 0:
return memo[h][l]
if l == 0:
return 1
if l < h:
return 0
memo[h][l] = (bricks(h + 1, l - h, memo)) + (bricks(h + 1, l, memo))
return memo[h][l]