快学scala第二章习题答案

快学scala第二章习题答案

ID:11897054

大小:34.00 KB

页数:0页

时间:2018-07-14

快学scala第二章习题答案_第页
预览图正在加载中,预计需要20秒,请耐心等待
资源描述:

《快学scala第二章习题答案》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、2 控制结构和函数 2.1 一个数字如果为正数,则它的signum为1;如果是负数,则signum为-1;如果为0,则signum为0.编写一个函数来计算这个值简单的逻辑判断defsignum(num:Int){if(num>0)print(1)elseif(num<0)print(-1)elseprint(0)}Scala中已经有此方法了,刚才查找API的时候,应该能看到BigInt(10).signum 2.2 一个空的快表达式{}的值是什么?类型是什么?在REPL中就能看出来了scala>valt={}t:Unit=()可以看出,它的值是()类型是Unit 2.2 指出在Scal

2、a中何种情况下赋值语句x=y=1是合法的。(提示:给x找个合适的类型定义)题目已经给了明确的提示了。本章节中已经说过了,在scala中的赋值语句是Unit类型。所以只要x为Unit类型就可以了。scala>vary=4;y:Int=4scala>varx={}x:Unit=()scala>x=y=7x:Unit=()这也再次证明了{}是Unit类型 2.4 针对下列Java循环编写一个Scala版本:for(inti=10;i>=0;i–)System.out.println(i);使用Scala版本改写就OK了for(i<-0to10reverse)print(i) 2.5 编写一个

3、过程countdown(n:Int),打印从n到0的数字这个就是将上面的循环包装到过程中而已。还是换个写法吧。defcountdown(n:Int){0tonreverseforeachprint} 2.6 编写一个for循环,计算字符串中所有字母的Unicode代码的乘积。举例来说,"Hello"中所有字符串的乘积为9415087488Lscala>vart:Long=1t:Long=1scala>for(i<-"Hello"){

4、t=t*i.toLong

5、}scala>tres57:Long=9415087488 2.7 同样是解决前一个练习的问题,但这次不使用循环。(提示:在Sc

6、aladoc中查看StringOps)scala>vart:Long=1t:Long=1scala>"Hello".foreach(t*=_.toLong)scala>tres59:Long=9415087488 2.8 编写一个函数product(s:String),计算前面练习中提到的乘积defproduct(s:String):Long={vart:Long=1for(i<-s){t*=i.toLong}t} 2.9 把前一个练习中的函数改成递归函数配合前一章的take和drop来实现defproduct(s:String):Long={if(s.length==1)return

7、s.charAt(0).toLongelses.take(1).charAt(0).toLong*product(s.drop(1))} 2.10 编写函数计算xn,其中n是整数,使用如下的递归定义:·xn=y2,如果n是正偶数的话,这里的y=x(n/2)·xn =x*x(n-1),如果n是正奇数的话·x0 =1·xn =1/x(-n),如果n是负数的话不得使用return语句defmi(x:Double,n:Int):Double={if(n==0)1elseif(n>0&&n%2==0)mi(x,n/2)*mi(x,n/2)elseif(n>0&&n%2==1)x*mi(x,n-1

8、)else1/mi(x,-n)}

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。