《快学Scala》习题第二章 控制结构和函数习题

《快学Scala》第二章 控制结构和函数习题

2.1 一个数字如果为正数,则它的signum为1;如果是负数,则signum为-1;如果是0,则signum为0.编写一个函数来计算这个值。

def signum(n: Int): Unit ={

  if (n == 0){ 0 }

  if(n > 0) { 1 }

  else{ -1 }

}

 

2.2一个空的块表达式{}的值是什么?类型是什么?

值为空,类型为Unit

 

2.3指出在Scala中何种情况下赋值语句x=y=1是合法的。(提示:给x找个合适的类型定义)

x为Unit类型时,x=y=1语句是合法的

 

2.4针对下列Java循环编写一个Scala版:for (int i = 10;i >= 0;i--) System.out.println(i);

 

2.5编写一个过程countdown(n:Int),打印从n到0的数字。

def countdown(n: Int){

  for( i <- 0 to n reverse)

    print(i)

}

 

 

2.6 编写一个for循环,计算字符串中所有字母的Unicode代码的乘积。举列来说,“Hello”中所有字符的乘积为9415087488L。

 

2.7同样是解决一个练习的问题,但这次不使用循环。(提示:在Scaladox中查看StringOps)

 

2.8编写一个函数product(s:String),计算前面练习中提到的乘积。

 

2.9把前一个练习中的函数改成递归函数。

def product(s:String): BigInt = {

  var t:BigInt = 1

  if(1 == s.length){ t = s.toLong}

  if(s.length > 1){ t = t * s(s.length - 1).toLong

    product(s.dropRight(1))}

  t}

 

2.10

def sum(x:Int,n:Int):BigInt ={

  if(n == 0){ 1 }

  if(n % 2 == 0){ sum(x,n/2) * sum(x, n/2)}

  if(n % 2 == 1){ x * sum(x,n-1)}

  if(n < 0){ 1/sum(x,-1 * n)}

 }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值