单链表递归求平均数

设计一个算法:实现用递归求单链表的平均数

实现思路

通过递归循环累加,要注意用double类型,避免在递归过程中用int会被强制转换导致最后误差

实现代码

public class LNode {
    LNode next;
    double data;

    public LNode(LNode next, int data) {
        this.next = next;
        this.data = data;
    }
}

 /**
     * 求平均值函数
     * @param node 单链表头结点
     * @param n 单链表长度
     * @return 平均值
     */
    public static double average(LNode node, int n) {
        if(node.next == null) {
            return node.data;
        }
        return (average(node.next, n - 1) * (n - 1) + node.data) / n;
    }

测试代码

 public static void main(String[] args) {
        LNode L1 = new LNode(null,2);
        LNode L2 = new LNode(L1,3);
        LNode L3 = new LNode(L2,5);
        LNode L4 = new LNode(L3,10);

        double result = average(L4, 4);
        System.out.print(result);
    }
输出结果5.0
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 13,887评论 1 32
  • 题目类型 a.C++与C差异(1-18) 1.C和C++中struct有什么区别? C没有Protection行为...
    阿面a阅读 12,322评论 0 10
  • DAY 01 JAVA简述 Java是由SUN公司在1995年推出的一门高级编程语言,是现今服务器端的首选编程语言...
    周书达阅读 4,622评论 0 0
  • 1.把二元查找树转变成排序的双向链表 题目: 输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。 要求不...
    曲终人散Li阅读 8,651评论 0 19
  • 夏日炎炎,让每一个毛孔都躁动了起来,做起事情来更是越来越没耐心。是时候出门散散心了,趁着周末,约上三五好友,一同出...
    Kariyo阅读 10,167评论 0 1

友情链接更多精彩内容