0 scala
这个函数应该返回列表中所有数字的总和,但是当我运行它时,我总是回来ans=0.
def sum(st: List[Int]): Int = {
var ans=0
def combine(st: List[Int], ans:Int): Int = {
if (st.isEmpty) ans else combine(st.tail, ans)
}
ans
}
Run Code Online (Sandbox Code Playgroud)
这有什么问题?
您需要将列表的头部添加到ans.目前你正在递归但实际上没有使用列表的头部.
例如,我认为你需要类似下面的内容,你可以将列表的头部添加到剩余部分的总和中.
scala> def sum(st: List[Int]): Int =
| {
| if (st.isEmpty) {
| 0
| }
| else {
| st.head + sum(st.tail)
| }
| }
sum: (st: List[Int])Int
Run Code Online (Sandbox Code Playgroud)