scala用递归实现sum

查看:110
本文介绍了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆