【发布时间】:2012-11-01 00:52:50
【问题描述】:
我有这个方法可以计算一些统计数据:
public void calculateAverage(int hour){
if (hour != 20) {
int data =0;
int times = 0;
for (CallQueue cq : queues) {
data += cq.getCallsByTime().get(hour);
times++;
}
averageData.add((double)data/times);
calculateAverage(hour + 1);
}
}
现在我很自豪我创建了一个递归方法,但我知道这可以通过循环来解决。
我的问题是:用递归还是循环解决这类问题更好?
【问题讨论】:
-
递归被认为是更“优雅”的迭代解决方案。
-
这里
hour的有效值是多少? -
当您使用小时 > 20 拨打
calculateAverage时会发生什么,例如21? -
这甚至不是一个递归函数,它只是一个递归过程。它不使用递归来实现任何实际效果。是的,在 Java 中递归从来都不是首选,因为它不是尾调用优化的语言,所以你会不必要地强调调用堆栈。
-
这能回答你的问题吗? Recursion or iteration?