现在有一个int型数组,例如{2,5,3,10,-1,20},递归求解把这个数组中的数按照一定步长把它给打印出来,例如步长为2,输出结果是2,10,5,-1,3,20。如果下一个数已经被打印了,要打印它下面一个数,知道整个数组的数被打完

解决方案 »

  1.   

    /**
     *
     * @author zdjray
     */
    public class PrintArray {    /**
         * @param args the command line arguments
         */
        public static void main(String[] args) {
            // TODO code application logic here
            int length = 2;
            int arr[] = {2, 5, 3, 10, -1, 20};
            int arrLen = arr.length;
            int a[] = new int[arrLen];
            boolean b[] = new boolean[arrLen];
            
            a[0] = 0;
            b[0] = true;
            
            for(int i = 0; i < arrLen - 1; i++){
                b[i + 1] = false;
            }
            
            for(int i = 0; i < arrLen - 1; i++){
                a[i + 1] = ((a[i] + length + 1) % arrLen);
                
                while(b[a[i + 1]] == true){
                    a[i + 1]++;
                }
                b[a[i + 1]] = true;
            }
            
            for(int i = 0; i < arrLen; i++){
                System.out.print(arr[a[i]] + " ");
            }
        }}