scala实战学习-尾递归函数
2024-08-29 03:10:36
求
$$
\Sigma\sideset{^b_a}f(x)
$$
object sumfunc{
def sum(f: Int => Int)(a: Int)(b:Int): Int = {
@annotation.tailrec
def loop(n: Int,acc: Int): Int = {
if(n > b){
println(s"n=${n},acc=${acc}")
acc //当计算到b值,返回acc值
}else{
println(s"n=${n},acc=${acc}")
loop(n + 1, acc + f(n))
}
}
loop(a, 0) //n从a开始,acc从0开始
}
sum(x => x)(1)(5) //将f(X)、a、b传到sum函数中
//> n=1,acc=0
//| n=2,acc=1
//| n=3,acc=3
//| n=4,acc=6
//| n=5,acc=10
//| n=6,acc=15
//| res0: Int = 15
sum(x => x * x)(1)(5) //> n=1,acc=0
//| n=2,acc=1
//| n=3,acc=5
//| n=4,acc=14
//| n=5,acc=30
//| n=6,acc=55
//| res1: Int = 55
val sumSquare=sum(x => x*x)_ //> sumSquare : Int => (Int => Int) = <function1>
sumSquare(1)(5) //> n=1,acc=0
//| n=2,acc=1
//| n=3,acc=5
//| n=4,acc=14
//| n=5,acc=30
//| n=6,acc=55
//| res3: Int = 55
最新文章
- 让 Ubuntu 桌面自动更换壁纸
- MVC4 +EasyUI Tabs 使用
- android 新建项目中去掉标题栏
- 注册Com组件..
- ZooKeeper 3.5.0 分布式配置问题
- C语音的调查
- Android构建boot.img(二):kernel的拷贝与打包
- JavaScript库开发者们的规则
- HDU2111 Saving HDU 【贪心】
- base64自定义编码表 php版本
- c# 项目带皮肤一起打包发布解决办法
- asp之FSO大全
- ASP.NET MVC3 系列教程 - 目录
- Android应用程序组成部分
- jQuery链式操作如何返回上一级DOM
- Js的闭包,这篇写的是比较清晰明了的
- 十三、Hadoop学习笔记————Hive安装先决条件以及部署
- Unity3D相机震动效果
- springboot整合微软的ad域,采用ldap的api来整合,实现用户登录验证、
- python 列表、元组