java - 用于计算相邻重复项的递归函数

标签 java

我希望递归函数检查当前节点中的值是否等于下一个节点中的值并递增 1,否则不递增并继续移动直到列表末尾。因此,对于 1, 2, 2, 3 , 1, 1 的列表。它应该返回 2 作为 2,2 是一个相邻的重复项,1, 1 是另一个相邻的重复项。

当当前值不等于下一个值时,我不知道如何处理错误情况。基本上不增加。

这是我到目前为止的代码...

int fn(Node l) {
    if (l == null)
        return 0;
    else 
        return (l.value == l.next.value) ? (1 + fn(l.next)) : ;
}

最佳答案

在任何一种情况下都需要再次调用该函数,对于错误的情况,您不会将 1 添加到返回值,即

return (l.value == l.next.value) ? (1 + fn(l.next)) : fn(l.next);

您还应该首先检查l.next 是否不null。所以你可以重写这个函数...

int fn(Node l) {
   if (l == null || l.next == null)
       return 0;
   return (l.value == l.next.value ? 1 : 0) + fn(l.next);
}

关于java - 用于计算相邻重复项的递归函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12875497/

相关文章:

java - NumberFormatException 在 jdk1.7 中将字符串转换为具有下划线、连字符的 int

java - MPAndroidChart X轴标签未与条形图对齐

java - 错误参数类型 E 隐藏了类型 E

java - 如何为 Eclipse IDE 设置非 Eclipse Java 编译器

swing - 为什么我的 Rich Label 文本的一部分看起来被覆盖/隐藏了?

java - 具有多级继承的 XmlDiscriminatorNode/XmlDiscriminatorValue

java - Spring AMQP 对消息超时采取行动

java - 将对象从 Activity 传递到 Service,该对象不能实现 Serialized 或 Parcelable

java - 图像未加载到 jar 文件中

c# - 当您已经相当了解 C# 时,还值得学习 Java 吗?