java 使用全局变量递归反转数组

epggiuax  于 2023-04-19  发布在  Java
关注(0)|答案(1)|浏览(106)

我不太确定如何修改不在递归方法中的start和end?
在这个例子中,我试图反转一个数组。
到目前为止,我的测试通常会得到StackOverflow错误。有什么我应该做的吗?

int start =0;
 int end =0;
 public int[] backwardArray(int[] myArray) {
     end = myArray.length-1;
     if (start < end) {
         int temp = myArray[start];
         myArray[start] = myArray[end];
         myArray[end] = temp;
         backwardArray(myArray);
         end--;
         start++;
      }
      return myArray;
 }
4dbbbstv

4dbbbstv1#

在了解到使用全局变量是非常危险的,并且我在这里使用它们的方式并不可取之后,我发现使用助手方法更有益。修订版工作得更好:

public int[] backwardArray(int[] myArray) {
        return backwardArray(myArray,0,myArray.length-1);
    }
    public static int[] backwardArray(int[] myArray, int start, int end) {
        if(start<end){
               int temp = myArray[start];
               myArray[start] = myArray[end];
               myArray[end] = temp;
               return backwardArray(myArray, ++start, --end);
            }
        return myArray;   
    }

(诚然,我花了很长时间才意识到这一点,但是)System.out.println()看起来像:

public static void main(String[] args) {
        goingBackward y = new goingBackward();
        int [] x= {1,5,8,3,15,35};
        System.out.println(Arrays.toString(y.backwardArray(x)));
        }

相关问题