快学scala习题第二章答案

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

object demo1 {
  def main(args: Array[String]): Unit = {
    //var signum:Int=0
    val signum=(n:Int)=>{
      if(n>0){
        1
      }else if(n<0){
        -1
      }else{
        0
      }
    }
    println(signum(0))
  }
}

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

def checkEmptyBlockType { println({}); println({}.getClass()) }

2.3 指出在Scala中何种情况下赋值语句x=y=1是合法的。

def checkAssignLegal {
    var x: Unit = ()
    var y = 1
    x = y = 1
  }

2.4 针对下列Java循环编写一个Scala版本:

  • for(int i=10;i>=0;i–)System.out.println(i);
object demo4 {
  def main(args: Array[String]): Unit = {
   for(i<- Range(10,0,-1)){
     println(i)
   }
  }
}
或者是
for(i<- 1 to 10 reverse){
  println(i)
}

2.5 编写一个for循环,计算字符串中所有字母的Unicode代码的乘积。

def sum(s:String)={
   var sum:Long=1
  for(i<-"Hello"){
       sum=sum*i.toLong
  }
  sum
}

2.6 编写一个for循环,计算字符串中所有字母的Unicode代码的乘积。

  • 举例来说,"Hello"中所有字符串的乘积为9415087488L
def calculateCharsUnicodeProduct(s: String) = {
    var res: Long = 1
    s foreach { res *= _.toLong }
    res
  }

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

def product2(s:String):Long={
   if(s.length==1){
      s.charAt(0).toLong
   }else{
     //s.take(1)取出字符串然后取出第一个字符
     //s.drop(1)除了第一个剩下的字符串
     s.take(1).charAt(0).toLong * product2(s.drop(1))
   }
}

2.10 编写函数计算xn,其中n是整数,使用如下的递归定义:

def question10(x: Int, n: Int): BigInt = n match {
    case 0 => 1
    case n if n < 0 => 1 / question10(x, -n)
    case n if n % 2 == 0 => question10(x, n / 2) pow 2
    case n if n % 2 == 1 => x * question10(x, n - 1)
  }

如果大佬需要刷leetcode 可以关注这个微信公众号后期会更新
在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大数据学习爱好者

你的鼓励是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值