尝试编写一个方法来生成所有整数分区而不重复并使用递归

时间:2014-03-04 21:13:23

标签: java recursion

我正在尝试编写一个生成整数分区的方法,但我自己也遇到了麻烦,学校里没有人似乎知道该怎么做所以我来这里寻求帮助是因为我我真的很努力,而且我没有做任何事情。

因此,作为输出示例,我们有这个,对于数字4:4的分区

4

3 1

2 2

2 1 1

1 1 1 1

我到目前为止的代码是:

static void partition(int[] p, int n, int m, int i) {

        if (n == 0){
            for (int j= 0; j < m; j++)
            System.out.print(p[j]+" ");

        System.out.println();
        }
        else
            for (int k= m; k  >=0; k--) {
                p[i]= k;
                partition(p, n-k, Math.min(n-k, k), i+1);
            }

它不起作用,但我不太清楚为什么如果有人可以通过指出并帮助我修复它或建议更好的方法来帮助它将非常感激。提前谢谢!

1 个答案:

答案 0 :(得分:0)

输出数组的循环应该最多i而不是m

for (int j= 0; j < i; j++)