我知道我忽略了一些非常基本和基本的东西,但我需要帮助创建一个平均函数,只使用一个参数(在这种情况下包含整数的列表),计算给定整数的平均值
public static double mean (Cons lst) {
int total = (Integer) lst.data;
int count = //something to keep count through the recursion
if(lst.next == null) {
return total / count;
}
else return mean(lst.next); // return statement isn't correct, need help here as well
}
任何帮助都会很棒。如果最简单的解释方法是编写方法本身,那就太好了,但我只想弄清楚如何递归保持运行计数而不添加参数。
非常感谢。
答案 0 :(得分:0)
您正在开发递归均值函数作为Java类的方法。为什么不将计数和总局部变量声明为该类的属性?
class Mean {
static int total = 0;
static int count = 0;
public static double mean (Cons lst) {
total += (Integer) lst.data;
count += 1;
if(lst.next == null) {
double ret = total/count;
total = 0;
count = 0;
return ret;
}
return mean(lst.next); // return statement isn't correct, need help here as well
}
}
其他选项是将“count”作为递归方法的第二个参数。如果您不希望用户传递更多参数,请使用两种方法:“mean”方法,使用一个参数(您的列表),应该调用包含您的实现的第二个方法“recursiveMean(list,0)”。
public static double mean (Cons lst) {
return recursiveMean (lst, 0, 0)
}
public static double recursiveMean (Cons lst, int count, int total) {
total += (Integer) lst.data;
count += 1;
if(lst.next == null) {
return total / count;
}
return mean(lst.next,count,total); // return statement isn't correct, need help here as well
}
尽管如此,我不明白为什么你将平均函数作为递归函数实现,除非它是某种教育练习。