Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我的项目需要一点帮助_Java_Recursion - Fatal编程技术网

Java 我的项目需要一点帮助

Java 我的项目需要一点帮助,java,recursion,Java,Recursion,我正在开发一个JAVA项目作为我的助手。在LinkedList类的一部分中,我学习了递归。有人能帮我写这个函数吗?问题是如何为LinkedList类编写一个递归实例方法,以LinkedList长度的倒序和长度打印链表实例(我猜是使用不同的两个函数)? 我的LinkedList类类似于: public class Node { public int data; public Node next; public Node (int data) { this.data = data; } } pub

我正在开发一个JAVA项目作为我的助手。在LinkedList类的一部分中,我学习了递归。有人能帮我写这个函数吗?问题是如何为LinkedList类编写一个递归实例方法,以LinkedList长度的倒序和长度打印链表实例(我猜是使用不同的两个函数)? 我的LinkedList类类似于:

public class Node
{
public int data;
public Node next;
public Node (int data)
{
this.data = data;
}
}

public class LinkedList
{
private Node first;
public LinkedList
{
first = null;
}
}
对于ex,这是我针对LinkedList的插入递归方法

private void insertRec(Node n, int data)
{
if(n == null)
{
Node newNode = new Node(data);
return newNode;
}

if(data > n.data)
n.next = insertRec(n.next,data);
return n;
}

通常的方法是使用“current”列表元素(从第一个列表节点开始)调用遍历方法。该方法检查是否包含列表的最后一个元素。如果没有,则使用下一个元素递归调用该方法。然后打印出当前元素的值。

将其添加到节点类:

public void printReverse() {

  if ( next != null ) {
    next.printReverse();
  }

  System.out.println(data);
}
然后将其发送到
LinkedList
类:

print void printReverse() {
  System.out.println("(");

  if ( first == null ) {
    first.printReverse();
  }

  System.out.println(")");
}
您应该尝试更改此代码以正常打印列表:)(这是一个非常简单的更改)

用于计算链表的长度

 public static int length (LinkedList l)
  {
    if (l == null)
      return 0;
    else
      return 1 + length(l.next);
  }

好的,到目前为止你试过什么?您有什么具体的问题?如果您从一个算法开始,请求输入/帮助,而不是请求整个函数,这可能会有所帮助。@Oli我可以为这些问题编写任何代码,但我为其他问题编写了一些代码。我将要发布它,请您检查一下它是否为真。我认为在我的类中使用递归函数更好:)谢谢。你知道我的LinkedList递归方法的长度吗?它是printReverse方法的一个变体。您需要知道,列表的长度可以计算为尾部的长度(从头部开始的子列表)加上1:)。
 public static int length (LinkedList l)
  {
    if (l == null)
      return 0;
    else
      return 1 + length(l.next);
  }