java - 使用递归/辅助函数计算链表的大小 - Java

标签 java recursion

这里是使用 Java 的初学者(一年级学生),我无法让以下功能正常工作。目标是使用递归和辅助函数来计算单链表的大小。当针对测试列表运行代码时,它会不断返回 List 更改为 []

我在 Java 方面遇到了困难,所以非常感谢您的帮助。谢谢

public class MyLinked {
  static class Node {
   public Node(double item, Node next) {
    this.item = item;
    this.next = next;
   }
   public double item;
   public Node next;
  }
  int N;
  Node first;

  public int sizeForward() {
   return sizeForwardHelper(first);
  }

  public int sizeForwardHelper(Node n) {
   Node current = first;
   if (current == null) {
    return 0;
   } else {
    first = first.next;
    return sizeForward() + 1;
   }
  }

我相信如果列表中没有元素,我将第一部分设置为返回 0。我相信这是第二部分设置不正确?

谢谢

最佳答案

因为不要用勺子喂你,这对你的学习很重要,所以我将描述一种方法而不是提供代码。

使用这个事实:

The length of the list from any given node to the end is 1 plus the length measured from the next node (if there is one).

通常(就像在这里一样),递归函数采用这种形式:

  1. 如果终止条件为真,则返回一些值
  2. 否则,返回一些值加上递归计算的值

编写递归函数时,首先要确定终止条件。在这种情况下,n == null 是显而易见的选择,并且您将返回 0,因为您已经超出了列表的末尾并且没有任何长度(即没有节点)什么都没有。这也可以处理空列表(当 firstnull 时),无需任何特殊代码。

否则,返回1(一个节点的长度)加上next的长度。

把所有这些放在一起,你就会得到答案。

——

提示:如果使用三元表达式,则可以使用一小行代码对递归辅助方法的主体进行编码。

关于java - 使用递归/辅助函数计算链表的大小 - Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51028186/

相关文章:

java - 使用 JDBC 从 MySQL 数据库中提取数据时如何避免丢失标点符号?

java - 调用Jenkins插件(thinBackup)的内部方法

java - 关闭终端 (SSH) 时 Mongodb 崩溃

php - 如何在 PHP 中以最佳方式构造递归函数的函数参数?

algorithm - 笛卡尔幂 - 通过递归

c++ - 递归方法不断崩溃(更改算法)

java jre 7u45 中断 classloader.getResources()?

java - Eclipse运行项目报错 - java hotspot(TM) 64-bit server VM -1.7.0_09 <> 1.5.0

c - 相同的程序给我不同的输出

recursion - 请引导我完成这个 "Erlang Programming"递归示例