当前位置: 首页 > 知识库问答 >
问题:

使用递归在java中反转数组

薛焱
2023-03-14

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

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);
  }
}

共有3个答案

曾翰飞
2023-03-14

尝试:

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};

    reverseDisplay(myArray,0);
  }

  public static void reverseDisplay(int[] ary, int position){
    if(position == ary.length){
        return;
    }

    reverseDisplay(ary, position + 1);
    System.out.print(ary[position]);
  }
}

如果位置==ary。长度完成递归,否则递归调用反向显示,然后打印数组的当前位置。

张亦
2023-03-14

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

您可以尝试这样做。返回语句阻止递归是无穷无尽的。

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

>

  • 您不调用递归方法。

    您有一个无休止的递归,因为由于缺少括括号,逆转显示()总是被执行。

    您的方法应为:

    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);
            }
        }
    }
    

  •  类似资料:
    • 问题内容: 我还没有找到满足我的功能特定需求的任何东西,是的,这是用于家庭作业。 所以我有: 前提条件:x.length> 0 我不能让函数返回任何东西,而唯一的参数是数组这一事实使我感到困惑。 我已经尝试过将循环与递归一起使用,但是我尝试过的一切似乎都以生成函数的无限实例结束。 我已经有了一个想法/建议与该函数一起使用另一个函数,但是,当前如何递归地使用原始函数超出了我的范围。 任何帮助表示赞赏

    • 我做了一个使用递归方法反转单链表的函数。然而,我在执行下面的代码时遇到了一些困难: 我应该如何在ReverseCursive函数/方法中传递第二个参数,以便执行它? 作为第二个参数,我想简单地传递链表的头节点。但是我不知道如何从类的init方法中获取头节点linked_list 我试了几件事,但都解决不了。也许我不太擅长OOP概念。有人能帮我解决这个问题吗?

    • 问题内容: 我已经在一个类的Java项目上工作了一段时间。它是链表(此处称为,包含称为的简单节点)的实现。问题是,一切都必须使用递归算法来完成。我可以用一种方法来做所有的事情: 现在,我的函数只是调用一个带有参数以允许递归的辅助函数。 我的助手功能具有的签名。 目前,我使用堆栈来迭代工作,但这不是规范所要求的。我在C语言中找到了一种算法,该算法可以递归地将其递归逆转并将其转换为Java代码,并且可

    • 问题内容: 我已经尝试了一段时间,但无法正常工作。我正在尝试一种无需使用字符串或数组即可反转整数的方法。例如,123应该以整数形式反转为321。 我的第一次尝试: 我也尝试使用它,但是似乎弄乱了中间数字: 我尝试查看网站上的一些示例,但是无法使其正常工作。为了进一步说明,我不能为此项目使用String或数组,而必须使用递归。有人可以帮我解决问题。谢谢。 问题答案: 关于什么: 当然,这是假定的。

    • 我试图编写一个递归方法来反转队列中的所有元素。 在实现队列的抽象类myQueue中 接口队列 在我的反向方法中,我的目标是不断地递归地从原始队列中退出队列(删除第一个元素),直到队列为空。每次我退出队列时,我都会将该对象放入一个临时队列中。当我的队列为空时,我将从临时队列重新排队到原始队列。 我的第一个问题是定义一个新的临时队列,在我的例子中是bufferQueue。我得到以下信息:

    • 本文向大家介绍单链表反转 递归法Java实现相关面试题,主要包含被问及单链表反转 递归法Java实现时的应答技巧和注意事项,需要的朋友参考一下 经历了很多面试,面试官最爱考察的算法无非是斐波那契数列和单链表反转,尽管是这些都是基础知识,然而我对单链表反转有更多的想法。 递归法是我早期最爱在面试中使用的算法,很有逼格,写起来非常优雅,非常好理解。 先定义链表数据结构 如上代码所示 递归法会逐层确定该