0

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

誰か助けてくれませんか?ありがとう!

4

2 に答える 2