java - 如何递归计算链表的平均值?

标签 java recursion linked-list

这是一个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 分配给 headb 从未使用过!

你想要:

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);
    }

}

关于java - 如何递归计算链表的平均值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44864194/

相关文章:

java - 我怎样才能重新安排我的代码让雨和海报出现

java - 什么时候在 Java 中使用 LinkedList 而不是 ArrayList?

Java:提取特定字符后的字符

java - 使用传递给构造函数的引用是否可以安全 - Java

java - InputStream 无法处理 2016 字节

linked-list - 查找链表中是否存在没有两个指针的循环

C++:这是递归删除链表的正确方法吗?

c++ - 我写的这个计算 NCR 的函数有什么问题吗?

shell - Makefile 中的递归清理

python - 使用递归来解决用户输入的表达式(计算器)