逆数组 (Java) // 逆数组 (Java)

Inverse array (Java) // Invertir array (Java)

我可以通过递归的方式对数组进行逆序,例如: array={1,2,3,4,5} arrayresult={5,4,3,2,1} 但是我的结果是同一个数组,我不知道为什么,请帮助我。

public class Recursion {
public static int arrayReverse(int [] array, int indice, int pos){
    if(indice>=0 && pos<array.length){
        int tmp = array[pos];
        array[pos]=array[indice];
        array[indice]=tmp;
        arrayReverse(array, indice-1, pos+1);
    }
    return array[array.length-1];
}

public static void arrayReverse(int [] array){
    arrayReverse(array, array.length-1, 0);
}

} class主要是数组

import java.util.Arrays;

public class Main {
/**
 * Prueba el método Recursion.arrayReverse
 * @param input - array a tratar
 * @param expected - resultado esperado
 */
static void test(int[] input, int[] expected) {
    // Se informa del caso que se está probando
    System.out.println("probando: arrayReverse(" + Arrays.toString(input) + ")");

    // Llamada al método a probar
    Recursion.arrayReverse(input);

    // Comprobación de los resultados
    if (!Arrays.equals(input, expected)) {
        System.out.print(">> Resultado erróneo, deberia ser: " + Arrays.toString(expected) + "");
        System.out.println(" y es: " + Arrays.toString(input) + "");
    } else {
        System.out.println(">> Resultado correcto: " + Arrays.toString(input) + "");
    }        
}

/**
 * Invoca a test para realizar múltiples pruebas
 * @param args
 */
public static void main(String[] args) {
    int[] v1 = {1, 2, 3, 4, 5};
    int[] v2 = {5, 4, 3, 2, 1};
    test(v1, v2);

} }

提示:您正在交换元素 - 这意味着您只需要遍历数组的一半...

你需要改变

public static int arrayReverse(int [] array, int indice, int pos){
    if(indice>=0 && pos<array.length){

类似于

public static int arrayReverse(int [] array, int indice, int pos){
    if(indice>=0 && pos<(array.length/2)){

不然你把前半段倒过来,再倒过来

static class Recursion {

    private static void arrayReverse(int[] array, int indice, int pos) {
        if (indice > pos ) { // change
            int tmp = array[pos];
            array[pos] = array[indice];
            array[indice] = tmp;
            arrayReverse(array, indice - 1, pos + 1);
        }           
    }

    public static void arrayReverse(int[] array) {
        arrayReverse(array, array.length - 1, 0);
    }
}

测试

zero elements:  [] --> []

single element: [1] --> [1]

even# elements: [1,2] --> [2,1]

odd# elements:  [1,2,3] --> [3,2,1]