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