Java 发电机组递归,发电机组超过3个元素。
我正在创建一个递归算法,能够从那里得到n,然后创建幂集。我的意思是,如果3是一个{{1},{2},{3},{1,2},{1,3},{2,3},{1,2,3}的幂集。目前,我的算法只工作到3,但在某种程度上,它是硬编码的,最后一行SOP打印出1,2,3,}。我似乎不知道如何为超过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){
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}),是的,老实说,我认为这并不好。我将采取不同的方法(使用链表)来完成电源设置。