使用递归在java中反转数组

使用递归在java中反转数组,java,recursion,Java,Recursion,我刚刚开始学习递归,并且能够用它编写一个简单的阶乘程序,没有太多问题。现在,我正在尝试编写一个递归方法,以相反的顺序编写数组,但我不知道我做错了什么。我错过了什么?多谢各位 import java.io.*; public class Recursion { public static void main(String[] args) throws IOException{ int myArray[] = {1,2,3,4,5,6,7,8,9,10}; } public

我刚刚开始学习递归,并且能够用它编写一个简单的阶乘程序,没有太多问题。现在,我正在尝试编写一个递归方法,以相反的顺序编写数组,但我不知道我做错了什么。我错过了什么?多谢各位

import java.io.*;

public class Recursion {
  public static void main(String[] args) throws IOException{
    int myArray[] = {1,2,3,4,5,6,7,8,9,10};
  }

  public static void reverseDisplay(int[] ary, int position){
    if(position > 0)
      System.out.print(ary[position]);
     reverseDisplay(ary, position - 1);
  }
}
  • 您不需要调用递归方法

  • 因为
    reverseDisplay()
    总是 由于缺少括号而正在执行

  • 此外,停止条件必须为
    =0
    ,因为数组的第一个索引为0
您的方法应为:

import java.io.IOException;

public class Recursion {
    public static void main(String[] args) throws IOException{
        int myArray[] = {1,2,3,4,5,6,7,8,9,10};

        reverseDisplay(myArray, myArray.length -1);
    }

    public static void reverseDisplay(int[] ary, int position){
        if(position >= 0) {
            System.out.print(ary[position]);
            reverseDisplay(ary, position - 1);
        }
    }
}
  • 您不需要调用递归方法

  • 因为
    reverseDisplay()
    总是 由于缺少括号而正在执行

  • 此外,停止条件必须为
    =0
    ,因为数组的第一个索引为0
您的方法应为:

import java.io.IOException;

public class Recursion {
    public static void main(String[] args) throws IOException{
        int myArray[] = {1,2,3,4,5,6,7,8,9,10};

        reverseDisplay(myArray, myArray.length -1);
    }

    public static void reverseDisplay(int[] ary, int position){
        if(position >= 0) {
            System.out.print(ary[position]);
            reverseDisplay(ary, position - 1);
        }
    }
}

当执行递归时,需要一个称为基本情况的东西。您需要使用基本情况来结束递归,否则将导致堆栈溢出

你可以试试这样的。
return
语句停止了无止境的递归

public static void reverseDisplay(int[] ary, int position){
     if(int == -1)
         return;
     System.out.print(ary[position]);
     reverseDisplay(ary, position - 1);
  }

当执行递归时,需要一个称为基本情况的东西。您需要使用基本情况来结束递归,否则将导致堆栈溢出

你可以试试这样的。
return
语句停止了无止境的递归

public static void reverseDisplay(int[] ary, int position){
     if(int == -1)
         return;
     System.out.print(ary[position]);
     reverseDisplay(ary, position - 1);
  }
尝试:

如果
position==ari.length
完成递归,则递归调用
reverseDisplay
,然后打印
ari
的当前位置


如果
position==ari.length
您完成了递归,否则您将递归调用
reverseDisplay
,然后打印
ari
的当前位置,请确切地说明问题所在,最好用一些示例。可能
System.out.print(ari[position-1])?结束条件
if(position>0)
似乎表明了这一点。当我运行代码时,我根本没有输出。您在main中调用reverseDisplay的位置在哪里?叫它!实际上,您从未调用过反向显示,这就是原因。你能试着测试一下函数本身吗?请澄清到底出了什么问题,最好是用一些例子。也许
System.out.print(ary[position-1])?结束条件
if(position>0)
似乎表明了这一点。当我运行代码时,我根本没有输出。您在main中调用reverseDisplay的位置在哪里?叫它!实际上,您从未调用过反向显示,这就是原因。你能试着测试一下这个函数吗?非常感谢。我现在明白我做错了什么。非常感谢。我明白我现在做错了什么。