0

我希望递归函数检查当前节点中的值是否等于下一个节点中的值并递增 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)) : ;
}
4

1 回答 1

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);
}
于 2012-10-13T18:07:03.983 回答