递归数组遍历:相同的代码,不同的结果

ca1c2owp  于 2022-10-01  发布在  Java
关注(0)|答案(1)|浏览(165)

我有两个递归遍历数组的短程序。第一个数组向后打印数组,第二个数组向前打印数组。第二个应该是向后打印数组。为什么要向前打印?这是相同的代码!

方案一:

public class SomeClass2 {
    public static String someMethod(int[] array2, int x) {
        if (x < array2.length)
            return String.format("%s%d ", someMethod(array2, x + 1), array2[x]);
        else
            return "";
    }

    public static void main(String[] args) {
        int[] array = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
        String results = someMethod(array, 0);
        System.out.println(results);
    }
}

方案二:

import java.util.Scanner;

public class BackwardsArray {

    public static String reverse(char[] array, int x) {
        if (x < array.length)
            return String.format("%s " + reverse(array, x + 1), array[x]);
        else
            return "";
    }

    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.print("Enter a sentence: ");
        String sentence = input.nextLine();
        char[] charArray = sentence.toCharArray();
        String backwardsSentence = reverse(charArray, 0);
        System.out.println(backwardsSentence);
    }

}
7rtdyuoh

7rtdyuoh1#

首先,使用if else而不使用{}来 Package 块是不好的做法

第二,BackwardsArray中的格式与SomeClass2不同

需要更改如下:

public static String reverse(char[] array, int x) {
    if (x < array.length){
        return String.format("%s%s ",reverse(array, x + 1), array[x]);
    }
    return "";
}

完整代码:

public class BackwardsArray {

    public static String reverse(char[] array, int x) {
        if (x < array.length){
            return String.format("%s%s ",reverse(array, x + 1), array[x]);
        }
        return "";
    }

    public static void main(String[] args) {
        String sentence = "10 9 8 7 6 5 4 3 2 1";
        char[] charArray = sentence.toCharArray();
        String backwardsSentence = reverse(charArray, 0);
        System.out.println(backwardsSentence);
    }

}

测试结果:

不知道它是否符合您的要求。

相关问题