楽しみのためにたくさんのアルゴリズムを見ているときに、ある質問に出くわしました。私が (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)
誰か助けてくれませんか?ありがとう!