• Scala学习手册(Learning Scala)第四章习题


    ---恢复内容开始---

    1、写一个函数,给定一个圆的半径,计算这个圆的面积。

    scala> def area(r:Double):Double = r*r*3.14area: (r: Double)Doublescala> area(5)res30: Double = 78.5

    也可以使用math.pow(r,2)来计算平方

    2、对练习1中的函数提供一个替代形式,将半径作为一个String,如果调用这个函数时提供了一个空String会发生什么?

    scala> def ares(r:String):Double = {| r.isEmpty match {| case true => 0| case false => math.pow(r.toDouble,2)*math.Pi| }| }ares: (r: String)Doublescala> ares("534")res35: Double = 895843.994727051scala> ares("")res36: Double = 0.0

    3、写一个递归函数,可以5、10、15....地打印从5到50的值,但不要使用for或while循环,可以实现尾递归吗?

    scala> @annotation.tailrec| def printnum(start:Int,max:Int):Unit = {| if(start <= max){| println(start)| printnum(start+5,max)| }| }printnum: (start: Int, max: Int)Unitscala> printnum(5,20)5101520

    4、写一个函数,取毫秒值,返回一个字符串,按天、小时、分和秒描述这个值,输入值的最近类型是什么呢?

    object Point{def main(args: Array[String]): Unit = {val tm:String = "1502036122000"val a = tranTimeToLong(tm.toLong)println(a)}def tranTimeToLong(tm:Long) = {val secs = tm / 1000val days = secs / (24*60*60)val hours = (secs % (24*60*60)) / (60*60)val minutes = (secs % 3600 ) / 60val seconds = secs % 60s"$days days,$hours hours, $minutes minutes,$seconds seconds"}}

    5、写一个函数,计算第一个值以第二个值为指数的幂。首先试着用math.pow来写这个函数,然后用你自己的算式来实现。你使用了变量吗?有没有方法只使用不可变的数据?你选择一个足够大的数值类型了吗?

    scala> def cal(v1:Double,v2:Double):Double = math.pow(v1,v2)cal: (v1: Double, v2: Double)Doublescala> cal(5,10)res38: Double = 9765625.0

    尾递归

    @annotation.tailrecdef pow(x:Double,y:Int,accum:Double = 1):Double = {if (y < 1) accumelse pow(x,y-1,accum * x)}val x:Double = 5val y:Int = 10print(pow(x,y))

    6、写一个函数,计算一对2D点(x和y)之差,并把结果返回为一个点。提示:这里很适合使用元组。

    def cal(v1:(Int,Int),v2:(Int,Int)):(Int,Int) = {(v2._1 - v1._1,v2._2 - v1._2)}cal((3,4),(8,9))

    ---恢复内容结束---

  • 相关阅读:
    thinkphp5分页
    thinkphp 获取器、修改器
    Thinkphp中对数据库的基础操作
    MYSQL 数据库内容的分页展示
    单例模式连接数据库
    简单的通过ajax ‘POST’ 方法实现与后台数据交互
    PHP中 .= 的意思
    mysqli 简单的php注册登录功能
    4.4
    梦断代码阅读笔记1
  • 原文地址:https://www.cnblogs.com/hong-bo/p/11678970.html
Copyright © 2020-2023  润新知