【发布时间】:2012-11-16 18:03:24
【问题描述】:
正如标题所说,我正在尝试使用函数式编程范式添加一个整数列表。所以,根本没有突变。这是一个家庭作业,我的教授已经设置了方法定义,这也是我卡住的部分原因,这就是我目前所拥有的:
public static Integer sum(final List<Integer> values) {
if(values.size() == 1) {
return values.get(0);
}
else {
List<Integer> tempList;
tempList = values.subList(0, values.size() - 1);
return sum(tempList);
}
}
我只能返回一个 List,并且在创建后不能以任何方式对其进行修改,并且由于使用了泛型 List,因此无法访问构造函数。 我可能会以错误的方式解决这个问题,我试图想办法将列表中的最后两个值相加,并将总和放在一个索引较短的新列表的最后一个位置。 如果您看到更好的方法来执行此操作,或者可以将我推向答案,我将不胜感激,它的作业,所以不要寻找完整的代码块。提前致谢。
【问题讨论】:
-
你必须使用递归吗?如果没有,请参阅 Bohemian 的回复。这是最合乎逻辑的解决方案。
-
请注意,您的代码会导致空列表异常。通常 sum 函数是用空列表作为基本情况定义的 - 而不是大小为 1 的列表。
标签: java recursion functional-programming