《快学Scala》习题详解 第2章 控制结构和函数
来源:互联网 发布:vnc客户端 linux版本 编辑:程序博客网 时间:2024/05/16 09:55
1 如果一个数字为正数,则它的signum为1;如果是负数,则signum为-1;如果是0,则signum是0
def f(x: Int): Int = { // 如果f不是递归,可以省略:Int,=会自动进行类型推断 // =用来接收返回值, 不需要返回值时,不用= // 如果没有=,println()将打印() if (x > 0) 1 else if (x == 0) 0 else -1 } println(f(1)) println(f(-1))
2 一个空的块表达式的值是什么?它的类型是什么
表达式的值为(),类型为Unit
Unit等于同Java中的void,只有一个值()
scala中,{ }中最后一个表达式的值的就是块的值
scala> val x = {}x: Unit = ()
3 指出Scala何种情况下赋值语句x=y=1是合法的
在x的类型为Unit的情况下是合法的
scala> var y=1y: Int = 1scala> val x = y = 2x: Unit = ()scala> val x = (y = 2)x: Unit = ()
4 针对下列java循环编写一个scala版
for(int i=10;i>=0;i–)System.out.println(i)
for (i <- (1 to 10).reverse) println(i)//10 to/until 1没反应,to/until只能用来写正序,然后倒转
5 编写一个过程countdown(n:Int),打印从n到0的数字
过程与函数相比,说白了就是没有返回值,不需要使用=
ef f(n: Int) { for (i <- 1 to n) println(i) } f(5)
6 编写一个for循环,计算字符串中所有字母的unicode代码的乘积
举例来说,”Hello”中所有字母的字符成为9415087488L
unicode中字母的编码仍然采用的是ascll码
def f(s: String) { var sum: Long = 1 for (i <- s) sum *= i println(sum) } f("Hello")
采用 Char中abstract def*(x: Char): Int 方法
7 同样是解决6的问题,但不能够用循环(提示,StringOps)
def f(s: String) { var sum: Long = 1 sum = s.map { _.toLong }.product //defmap[B](f: (A) ⇒ B): String[B],通过函数f将string中的每个元素映射成一个新的集合 // def product: A,对集合中的每个元素相乘 println(sum) } f("Hello")
8 编写函数product(s:String),解前面练习
将之前的过程加个=即可,不再赘述
9 把前一个练习的函数改为递归函数
var sum: Long = 1 def f(s: String): String = { if (s.length() >= 1) { sum *= s(0) //每调用一次截取首字符 var s2 = s.drop(1) f(s2) //递归时,最后一行可以不为String } else "" //递归需要指定返回值类型 } f("Hello") println(sum)
10 编写函数计算x的n次方,其中n是整数,使用如下的递归定义:
感觉翻译的有问题,求x的n次方
def f(x: Int, n: Int): Double = { if (n >= 1) { //先判断n是不是偶数,如果是偶数,变成两个相乘 if (n % 2 == 0) f(x, n / 2) * f(x, n / 2) //如果是奇数,对n减1,变成偶数,继续判定,直到n=1 else x * f(x, n - 1) } else if (n == 0) 1 // 如果n为负数,变成正数求解 else 1 / f(x, -n) } println(f(10, 2)) println(f(10, -2))
0 0
- 《快学Scala》习题详解 第2章 控制结构和函数
- 《快学Scala》 第2章 控制结构和函数
- 快学Scala第2章--控制结构和函数
- 《快学Scala》第2章 控制结构和函数 练习
- 快学Scala第2章–控制结构和函数 笔记
- 快学Scala习题解答—第二章 控制结构和函数
- 快学Scala习题解答—第二章 控制结构和函数
- 快学Scala习题解答—第二章 控制结构和函数
- 快学Scala(2) 控制结构和函数
- 《快学scala》习题详解 第1章 基础
- 《快学Scala》习题详解 第3章 数组
- 《快学Scala》习题详解 第5章 类
- 《快学Scala》习题详解 第6章 对象
- 《快学Scala》习题详解 第7章 包
- 《快学Scala》习题详解 第8章 继承
- 《快学Scala》习题详解 第10章 特质
- 《快学Scala》习题详解 第11章 操作符
- 《快学Scala》习题详解 第12章 高阶函数
- 关于Android权限
- WMS常见问题一(Activity displayed延迟)
- transformjs玩转星球
- Win7,8,10环境下使用VC++6.0方法
- 异步串行通讯和同步串行通讯区别
- 《快学Scala》习题详解 第2章 控制结构和函数
- 002-贪心算法求解“均分纸牌”
- 射频识别技术漫谈(16)——Mifare UltraLight
- apache-jmeter-3.0 Body Data 中文乱码
- 用QT设计《棋盘覆盖问题》UI部分
- SurfaceFlinger/gralloc Out of Memory error when allocating buffer memory for use with virtual frame
- 三级分销系统开发定制
- redis图形化客户端连接centos7
- html表格内容为空时不显示边框的问题