本帖最后由 micro_hx 于 2015-6-9 14:38 编辑
先将一下思路啊,就是n1.n2,n3,n4....
首先是n1 n2 交换位置 ,, 输出 , 然后n2 , n1位置复原
然后使n1 n3交换位置 , 输出 , 然后 n1 n3位置复原
....
相当于高中的排列组合啊。。。。
package t150605;
public class T5 {
//交换数组中的元素
public static void swap(int arr[] , int i , int j){
int temp = arr;
arr = arr[j];
arr[j] = temp ;
}
public static void test(int arr[] , int start , int end){
if(start+1 == end){
for (int i = 0; i < arr.length; i++) {
System.out.print(arr);
}
System.out.println();
}else{
for(int m = start ; m < end ; m++){
//一次调换位置
swap(arr,m,start);
//调用原来的递归
test(arr,start+1,end) ;
//将调换位置的复原回来
swap(arr,m,start);
}
}
}
public static void main(String[] args) {
int arr[] = {3,5,4,7} ;
test(arr,0,arr.length);
}
}
|