递归地在Java中保持计数 - 简单

时间:2013-09-25 06:34:46

标签: java recursion count increment

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

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
}

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

非常感谢。

1 个答案:

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

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