learning scala Function Recursive Tail Call
2024-08-27 06:55:30
可以使用scala库,可以从字面上看出是在调用 递归函数:
code
import scala.util.control.TailCalls._ val arrayDonuts: Array[String] = Array("Vanilla Donut", "Strawberry Donut", "Plain Donut", "Glazed Donut") println("\nStep : How to define a tail recursive function using scala.util.control.TailCalls._")
def tailSearch(donutName: String, donuts: Array[String], index: Int): TailRec[Option[Boolean]] = {
if(donuts.length == index) {
done(None) // NOTE: done is imported from scala.util.control.TailCalls._
} else if(donuts(index) == donutName) {
done(Some(true))
} else {
val nextIndex = index +
tailcall(tailSearch(donutName, donuts, nextIndex)) // NOTE: tailcall is imported from scala.util.control.TailCalls._
}
} println("\nStep : How to call tail recursive function using scala.util.control.TailCalls._")
val tailFound = tailcall(tailSearch("Glazed Donut", arrayDonuts, ))
println(s"Find Glazed Donut using TailCall = ${tailFound.result}") // NOTE: our returned value is wrapped so we need to get it by calling result val tailNotFound = tailcall(tailSearch("Chocolate Donut", arrayDonuts, ))
println(s"Find Chocolate Donut using TailCall = ${tailNotFound.result}")
resule:
Step : How to define a tail recursive function using scala.util.control.TailCalls._ Step : How to call tail recursive function using scala.util.control.TailCalls._
Find Glazed Donut using TailCall = Some(true)
Find Chocolate Donut using TailCall = None
最新文章
- Java网络编程之流——readline()方法的bug
- 初始化git远程仓库步骤
- 深入解析Javascript中this关键字的使用
- 阿里云centos yum源更换,两个文件是从阿里云服务器拷贝出来的,可安装openvpn
- Ajax与Jquery题库
- android学习笔记52——手势Gesture,增加手势、识别手势
- HashSet中的元素必须重写equals方法和hashCode方法
- Can't get WebApplicationContext object from ContextRegistry.GetContext(): Resource handler for the 'web' protocol is not defined
- 你能识别这些科技公司的真假logo吗?
- 设置文字在div中垂直居中,使用line-height
- throws与throw的对比
- Hbase笔记——RowKey设计
- iOS开发——图形编程Swift篇&;CAShapeLayer实现圆形图片加载动画
- JAVA并发,BlockingQuene
- 表达式树解析";框架";
- Omi教程-生命周期和事件处理
- [UWP]如何使用Fluent Design System (下)
- Java 集合-Arrays工具类的介绍
- u-boot编译
- android 开发 简单的小计算器