• Scala学习(二)练习


    Scala控制结构和函数&练习

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

    简单逻辑判断:

    测试结果如下:

    Scala中已经有此方法了,如下:

    println(BigInt(10).signum)

    测试结果如下:

    2. 一个空的快表达式{}的值是什么,类型是什么

    在REPL中测试如下:

    由此可以看出,它的值是()类型是Unit

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

    由于在scala中的赋值语句是Unit类型,所以只要x为Unit类型就可以了。测试如下:

    在此,再次证证明了{}是Unit类型

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

    Scala版本for循环如下:

    for(i <- 0 to 10 reverse )
    print(i+" ")

    测试结果如下:

    10    9    8    7    6    5    4    3    2    1    0    

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

    函数代码如下:

    def countdown(n:Int){

    0 to n reverse foreach print

    }

    测试结果如下:

    6. 编写一个for循环,计算字符串中所有字母的Unicode代码的乘积。举例来说,"Hello"中所有字符串的乘积为9415087488L

    程序代码如下:

    var t:Long=1

    for(ch <- "Hello"){

    t=t*ch

    }

    测试结果:

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

    通过查看Scaladoc可查看到foreach方法:

    var t:Long=1

    "Hello".foreach(t*=_)

    测试结果如下:

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

    函数代码如下:

    def product(str:String):Long={

    var t:Long=1

    str.foreach(t*=_)

    t

    }

    测试结果如下:

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

    递归代码如下:

    def product(str:String):Long={

    if(str.length==1)

    str.charAt(0).toLong

    else

    str.charAt(0)*product(str.drop(1))

    }

    测试结果:

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

    xn=y2,如果n是正偶数的话,这里的y=x(n/2)

    xn = x*x(n-1),如果n是正奇数的话

    x0 = 1

    xn = 1/x(-n),如果n是负数的话

    不得使用return语句

    程序代码如下:

    def xn(x : Double ; n : Int) : Double={

    if (n==0)

    1

    else if (n <0)

    1/xn(x,-n)

    else if (n%2==0)

    xn(x,n/2)* xn(x,n/2)

    else

    x*xn(x,n-1)

    }

    测试结果:

    如果,您认为阅读这篇博客让您有些收获,不妨点击一下右下角的【推荐】。
    如果,您希望更容易地发现我的新博客,不妨点击一下左下角的【关注我】。
    如果,您对我的博客所讲述的内容有兴趣,请继续关注我的后续博客,我是【Sunddenly】。

    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

  • 相关阅读:
    http协议及工作原理
    前端中的安全问题
    JS中的splice slice concat关于字符串,数组的处理
    git stash缓存
    Node学习心得
    uni-app中的TypeError: Cannot read property 'name' of undefined
    js 中Object.keys()返回string类型的索引
    JS中sort()方法,用于排序
    JS中JSON传值
    JS encodeURI()
  • 原文地址:https://www.cnblogs.com/sunddenly/p/4409276.html
Copyright © 2020-2023  润新知