当我为了好玩而查看一堆算法时遇到了一个问题。我解决的算法(在 Java 中)要求我列出整数的所有分区。所以 4 的分区应该收到以下打印输出:
4 , 3+1, 2+2, 2+1+1, 1+1+1+1
这是我的 Java 代码:
public static void partition(int n) {
partition(n, n, "");
}
public static void partition(int n, int max, String prefix) {
if (n == 0) {
StdOut.println(prefix);
return;
}
for (int i = Math.min(max, n); i >= 1; i--) {
partition(n-i, i, prefix + " " + i);
}
}
但是,当我尝试将我的 Java 代码转换为 Python 时,我收到“递归深度超出”错误。这里是:
def partition_rec(N):
def part(N,maximum = N, prefix = ""):
if(N==0):
print(prefix)
return
for i in range(N-1):
part(N-i,i,prefix + " " + str(i))
return part(N)
有人可以帮我吗?谢谢!