scala用递归实现sum
本文介绍了scala用递归实现sum的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
def sum(xs: List[Int]): Int = {var total = 0; for (i <- xs){total += i}; total}
但是这种写了毫无意义。我有写了如下
def sum(xs: List[Int]): Int = {
def loop(xs: List[Int], acc: Int): Int = {
if(xs.isEmpty) acc else {acc+= xs.head;loop(xs.tail,acc);acc}
}
但是报错,我其实不太懂,求助。
解决方案
上边代码有几个错误
(1)最明显的是大括号没对齐。
(2)acc是参数,是个val,不能重新赋值。
(3)上述代码是函数嵌套,外层的函数返回值是Int,而实际上函数体只有一个函数定义,应该调用一下内部函数。
可以考虑下面代码
def sum(xs: List[Int]): Int = if(xs.isEmpty) 0 else xs.head + sum(xs.tail)
这篇关于scala用递归实现sum的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文