怎么说呢,你可以简单的把它理解成一个循环语句,我建议楼主最好还是尝试着用递归的方法去完成一些需求,这样更好理解,比如说用递归的方法遍历一维数组,二维数组等,下面是我学递归的时候写的几个代码,希望对你有所帮助:
//打印出所有由{1,2,3,4,5}组成的数据窜:(传值的时候所有的索引初始为0)
public static void showArr(int index1,int index2,int index3,int index4,int index5) {
int[] arr1 = {1,2,3,4,5};
int[] arr2 = cutArr(arr1,arr1[index1]);
int[] arr3 = cutArr(arr2,arr2[index2]);
int[] arr4 = cutArr(arr3,arr3[index3]);
int[] arr5 = cutArr(arr4,arr4[index4]);
System.out.println(arr1[index1]+""+arr2[index2]+""+arr3[index3]+""+arr4[index4]+""+arr5[index5]);
index5++;
if (index5 == arr5.length) {
index4++;
index5 = 0;
if (index4 == arr4.length) {
index3++;
index4 = 0;
if (index3 == arr3.length) {
index2++;
index3 = 0;
if (index2 == arr2.length) {
index1++;
index2 = 0;
if (index1 == arr1.length) {
return;
}
}
}
}
}
showArr(index1,index2,index3,index4,index5);
}
//遍历一维数组:左边int[] arr为要遍历的数组,右边int n 为初始索引,传0进去。
public static void showArr1(int[] arr,int n) {
if (n == arr.length-1) {
System.out.println(arr[n]);
return;
}
System.out.print(arr[n]);
n++;
showArr1(arr,n);
return;
}
//遍历二维数组:(这个方法利用了遍历一维数组的方法,传值的时候给n传0就可以了)
public static void showArr2(int[][] arr,int n) {
if (n == arr.length-1) {
showArr1(arr[n],0);
return;
}
showArr1(arr[n],0);
n++;
showArr2(arr,n);
return;
}
//遍历二维数组:(这个方法是独立的,传值的时候m,n都传0)
public static void showArr3(int[][] arr,int m,int n) {
if (m == arr.length-1 && n == arr[m].length-1) {
System.out.println(arr[m][n]);
return;
}
System.out.print(arr[m][n]);
n++;
if (n == arr[m].length) {
m++;
n = 0;
System.out.println("");
}
showArr3(arr,m,n);
return;
} |