Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 发电机组递归,发电机组超过3个元素。_Java_Recursion_Set - Fatal编程技术网

Java 发电机组递归,发电机组超过3个元素。

Java 发电机组递归,发电机组超过3个元素。,java,recursion,set,Java,Recursion,Set,我正在创建一个递归算法,能够从那里得到n,然后创建幂集。我的意思是,如果3是一个{{1},{2},{3},{1,2},{1,3},{2,3},{1,2,3}的幂集。目前,我的算法只工作到3,但在某种程度上,它是硬编码的,最后一行SOP打印出1,2,3,}。我似乎不知道如何为超过3个元素递归地实现它 Public static void main(String[]args){ int elements = 0; while(elements!=-1){

我正在创建一个递归算法,能够从那里得到n,然后创建幂集。我的意思是,如果3是一个{{1},{2},{3},{1,2},{1,3},{2,3},{1,2,3}的幂集。目前,我的算法只工作到3,但在某种程度上,它是硬编码的,最后一行SOP打印出1,2,3,}。我似乎不知道如何为超过3个元素递归地实现它

Public static void main(String[]args){


        int elements = 0;
        while(elements!=-1){
            System.out.println("What's the number of elements? ");
            elements=   scan.nextInt();
            if(elements==-1){
                System.out.println("Terminate. ");
                break;
            }
            System.out.print("{");
            lab5(elements,0);
            System.out.print("}" );
            System.out.print("}");
            System.out.println();
        }
    }
}
static void lab5(int a,int b){
        String cur = "{";
        String curBack = "}";

        if(a==0){
            System.out.print(cur+curBack);
        }
        else if(a>0){

            System.out.print(cur+a+curBack);
            String phrase = null;
            b = a-1;
            if(a==b){
                b=a-2;
            }
            phrase = cur+a+", "+b+curBack;//a problem might be 

            b = a-2;
            if(b==0){
                phrase = "";
            }

            if(a==b){
                b=a-2;
            }

            System.out.print(phrase);
    lab5(a-1,b);
System.out.print(a+",");

b=a-1;如果(a==b){b=a-2;}
,嗯……那只是跳过这对集合。i、 e.{2,2},取而代之的是{2,1},当它变为0或-1Tho时会适得其反。这个条件永远不会是真的,无论如何,你这样做的方式(即使是3)看起来不太好,这不是你应该使用递归的方式。在这种情况下,如果计算2的集合({1},{2},{1,2}),递归将非常有用。然后,3的集合就是那些集合,在这些集合中,你将3添加到每个子集合中(即使是空的子集有{3}),是的,老实说,我认为这并不好。我将采取不同的方法(使用链表)来完成电源设置。