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 可以关注这个微信公众号后期会更新