A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

希望能帮我解答

2 个回复

倒序浏览
怎么说呢,你可以简单的把它理解成一个循环语句,我建议楼主最好还是尝试着用递归的方法去完成一些需求,这样更好理解,比如说用递归的方法遍历一维数组,二维数组等,下面是我学递归的时候写的几个代码,希望对你有所帮助:
        //打印出所有由{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;
                }
回复 使用道具 举报
        public static int[] cutArr(int[] arr,int x) {
                int[] targetArr = new int[arr.length-1];
                for (int index = 0;index<arr.length;index++) {
                        if (arr[index] == x) {
                                int i = 0;
                                for (;i<targetArr.length;i++) {
                                        if (arr[i] != x) {
                                                targetArr[i] = arr[i];
                                        }else {
                                                break;
                                        }
                                }
                                for (int j = i;j<targetArr.length;j++) {
                                        targetArr[j] = arr[j+1];
                                }
                        }
                }
                return targetArr;
        }
}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马