博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
learning scala Function Recursive Tail Call
阅读量:4947 次
发布时间:2019-06-11

本文共 1507 字,大约阅读时间需要 5 分钟。

可以使用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 + 1      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, 0))  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, 0))  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

  

转载于:https://www.cnblogs.com/lianghong881018/p/11174361.html

你可能感兴趣的文章
动态规划
查看>>
Spring的初始化:org.springframework.web.context.ContextLoaderListener
查看>>
Qt编写串口通信程序全程图文讲解(完整)
查看>>
Excel数据生成Sql语句的方法
查看>>
java中random()函数用法介绍
查看>>
C# OLEDB读取EXCEL表格时,某些字段为空解决方法
查看>>
Web前端开发HTML基础(1)
查看>>
bzoj1934: [Shoi2007]Vote 善意的投票
查看>>
The New Methodology新方法论
查看>>
Linux 进程管理剖析: Linux 同步方法剖析 内核原子,自旋锁和互斥锁
查看>>
day06---selenium剩余操作和自动登录
查看>>
Promise 基础学习
查看>>
干货!前端常见兼容性问题
查看>>
linux下mail命令使用
查看>>
晚安西南-----远控房魅影二之FKQ1440-14
查看>>
【例题】一笔画问题
查看>>
cuda8.0 + cudnn6 + tensorflow1.4 xing
查看>>
C# 字符串转换值类型
查看>>
nginx rewrite
查看>>
Oracle 身份验证方式
查看>>