0

我知道我忽略了一些非常基础和基本的东西,但是我需要帮助来创建一个均值函数,该函数仅使用一个参数(在这种情况下是包含整数的列表)计算给定整数的平均值。

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
}

任何帮助都会很棒。如果最简单的解释方法是编写方法本身,那就太好了,但我只是想弄清楚如何在不添加 params的情况下递归地保持运行计数。

非常感谢。

4

1 回答 1

0

您正在将递归均值函数开发为 Java 类的方法。为什么不将 count 和 total 局部变量声明为该类的属性?

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

其他选项是将“计数”作为递归方法的第二个参数。如果您不希望用户传递更多参数,请使用两种方法:“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
}    

尽管如此,我不明白为什么要将平均函数作为递归函数来实现,除非它是某种教育练习。

于 2013-09-25T06:41:54.627 回答