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

时间:2012-10-13 18:01:31

标签: 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 个答案:

答案 0 :(得分:2)

在任何一种情况下都需要再次调用该函数,对于错误的情况,您不会将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);
}