设计一个算法:实现用递归求单链表的平均数
实现思路
通过递归循环累加,要注意用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
网友评论