这是一个java代码,我应该使用递归将链表的偶数相加。这就是我想出的,但它没有成功。我的 java 编译器在这个语句中进入了一个无限循环:ave(i.getNext(((;
public double ave (Node b)
{
Node i = head;
if (i == null)
return 0;
else
{
if (i.getData()%2==0)
{
sum = i.getData() + sum;
count++;
}
if (i.getNext() != null)
ave(i.getNext());
return sum/(double)count;
}
问题是您每次都将i
分配给head
。b
从不使用!
你想要:
public double ave() {
return aveRec(head, 0, 0);
}
private double aveRec(Node n, long sum, int count) {
if (n == null) {
if (count == 0) {
// what to return if the linked list is empty?
return 0;
}
return (sum * 1D) / count;
}
if (n.getData() % 2 == 0) {
return aveRec(n.getNext(), sum + n.getData(), count + 1);
} else {
return aveRec(n.getNext(), sum, count);
}
}