(Java)查找数字数组的所有可能组合

(Java)查找数字数组的所有可能组合,java,recursion,Java,Recursion,我正在用Java编写一个程序,创建给定数量的数字的所有可能组合。 例如,如果有一个数组{1,2,3,4} 我需要编写一个程序,按照公式2^(Array.length)创建所有可能的组合 假设我有4个数字,我的总可能组合是2^4=16。 示例输出将是 {} {1} {1,2} {1,2,3} {1,2,3,4} {2} {2,3} {2,3, 1} {2,3,4} {3} {3,1} {3,1,4} {3,4} {4} {4,1} {4,2} 该概念与(F,F,F,F)(F,F,F,T)(F,F

我正在用Java编写一个程序,创建给定数量的数字的所有可能组合。 例如,如果有一个数组{1,2,3,4} 我需要编写一个程序,按照公式2^(Array.length)创建所有可能的组合 假设我有4个数字,我的总可能组合是2^4=16。 示例输出将是

{} {1} {1,2} {1,2,3} {1,2,3,4} {2} {2,3} {2,3, 1} {2,3,4} {3} {3,1} {3,1,4} {3,4} {4} {4,1} {4,2}
该概念与(F,F,F,F)(F,F,F,T)(F,F,T,T)等真值表相同

我已经尝试了很多循环和递归的方法,但似乎都无法实现,我感觉自己像个白痴,所以任何帮助都将不胜感激

到目前为止我所拥有的

公共课实践问题9{
公共静态void main(字符串[]args){
字符串s=“1234”;
排列(s.toCharArray(),0);
}
公共静态无效交换(char[]数组,int i,int j){
字符温度=数组[i];
数组[i]=数组[j];
数组[j]=温度;
}
公共静态void置换(char[]数组,int n){
if(n==array.length-1){
System.out.println(String.valueOf(array));
}
for(int i=n;i
到目前为止,产量是

1342
1432
1423
2134
2143
2314
2341
2431
2413
3214
3241
3124
3142
3412
3421
4231
4213
4321
4312
4132
4123 

你试过写点什么吗?请分享您的书面代码。我上传了到目前为止我所拥有的内容。如果您从0到2^n-1进行计数,并使用该序列中每个数字中的n位来决定是否将n个数字中的每一个都包括在列表中。提示:假设您拥有元素2..n的所有可能子集。然后通过将这些元素和另一个副本添加到每个子集中,得到元素1..n的所有可能子集。这有帮助吗?