《快学Scala》第二章习题解答_rongyongfeikai2的博客-程序员宅基地

技术标签: Scala  

RT。

package com.scalalearn.scala.main
/**
  * 快学scala 02习题
  */
object LearnScala02 {
  //1.如果一个数字为正数,则它的signum为1;如果是负数,则signum为-1;如果是0,则signum是0
  //编写一个函数来计算这个值
  def execise1(num:Int):Int = {
    if (num > 0) 1 else if(num == 0) 0 else -1
  }

  //2.一个空的块表达式的值是什么?它的类型是什么
  //值是(),类型是Unit

  //3.指出Scala何种情况下赋值语句x=y=1是合法的
  //在x的类型为Unit的情况下是合法的

  //4.针对下列java循环编写一个scala版
  //for(int i=10;i>=0;i--)System.out.println(i)
  def execise4():Unit={
    var i = 10
    while(i >= 0){
      println(i)
      i = i -1
    }
  }

  //5.编写一个过程countdown(n:Int),打印从n到0的数字
  def countdown(n:Int):Unit={
    var i = n
    while(i >= 0){
      println(i)
      i = i -1
    }
  }

  //6.编写一个for循环,计算字符串中所有字母的unicode代码的乘积
  //举例来说,"Hello"中所有字母的字符成为9415087488L
  def execise6(input:String):BigInt = {
    var sum:BigInt = 1
    val length = input.length
    for(i <- 0 to length-1){
      sum = sum * input(i).toLong
    }
    sum
  }

  //7.同样是解决6的问题,但不能够用循环(提示,StringOps)
  def execise7(input:String):BigInt = {
    var sum:BigInt = 0
    sum = input.map(_.toLong).product
    sum
  }

  //第8题感觉和6,7重复了,故不做

  //9.把前一个练习的函数改为递归函数
  def execise9(input:String,curIndex:Int):BigInt = {
    if (curIndex == input.length - 1){
      input(curIndex).toLong
    } else{
      execise9(input,curIndex+1)*input(curIndex).toLong
    }
  }

  //第10题,题目太长,主要是根据定义编写函数
  def execise10(x:Double,n:Int): BigDecimal ={
    if(n == 0){
      1
    }else if (n < 0){
      1/execise10(x,-1*n)
    }else if (n % 2 == 1){
      x*execise10(x,n-1)
    }else{
      execise10(x,n/2)*execise10(x,n/2)
    }
  }

  def main(args:Array[String]):Unit = {
    println("================execise1==============")
    println(LearnScala02.execise1(333))
    println(LearnScala02.execise1(-23))
    println(LearnScala02.execise1(0))

    println("================execise4==============")
    LearnScala02.execise4()

    println("================execise5==============")
    LearnScala02.countdown(3)

    println("================execise6==============")
    println(LearnScala02.execise6("Hello"))

    println("================execise7==============")
    println(LearnScala02.execise7("Hello"))

    println("================execise9==============")
    println(LearnScala02.execise9("Hello",0))

    println("================execise10==============")
    println(LearnScala02.execise10(2,-4))
  }
}


版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/rongyongfeikai2/article/details/51405930

智能推荐

iphone13电话噪音大怎么办 苹果13怎么设置电话降噪_shengyin714959的博客-程序员宅基地

我们用苹果13手机打电话时,经常会因为身边的噪音太多而听不清电话中的声音,这时我们就可以开启电话降噪功能。可以帮助我们较少环境噪音,下面就一起看看具体的设置方法吧!1、从设置菜单中找到辅助功能选项。2、在辅助功能界面中选择音频/视觉。3、把电话降噪右侧的开关开启就可以了。好了,今天的分享就到这里了...

android 自定义View implements OnClickListener_poclist的博客-程序员宅基地

应该是你代码写的有问题。12345678910111213141516171819202122232425262728293031

dcs与plc与c语言的联系,PLC与和DCS系统通讯的实现_楚沐风的博客-程序员宅基地

AB的controllogix controller 1756系列,与和利时Smartpro DCS系统通讯,将DCS设为主站,PLC设为从站,实现风机的监视和控制参数在DCS系统上实现监控。二、通讯控制原理:以下将通过网络物理层连接,通讯设置,数据处理和画面显示四个方面讲述如何实现通讯的过程。1、物理层连接:和利时的Smartpro DCS系统的控制层网络传送数据是通过DP协议完成,为了与DCS...

8、Verilog HDL--语言设计思想和可综合特性、组合电路设计_脑袋秃秃的博客-程序员宅基地_verilog hdl常用的组合电路及其设计

Verilog HDL语言主要用于电路设计和验证,部分语言是为电路的测试和仿真制定,因此其语言分为用于电路设计的可综合性语言和用于仿真的不可综合性语言。1、组合电路的设计组合电路的特点是,电路中任意时刻的稳态输出仅仅取决于该时刻的输入,而与电路原来的状态无关。组合电路的设计需要从以下几个方面考虑:首先,所用的逻辑器件数目最少,器件的种类最少,且器件之间的连线最简单,这样的电路称为“最小...

linux怎么搭建ntp,Linux搭建NTP服务器_zbzblr的博客-程序员宅基地

1.安装ntp ntpdateyum install -y ntp ntpdate2.修改配置文件#备份配置文件cp /etc/ntp.conf /etc/ntp.conf-bak#修改配置文件vi /etc/ntp.conf#配置文件内容为# For more information about this file, see the man pages# ntp.conf(5), ntp_acc...

随便推点

数字图像处理--02数字图像基础__苏沐的博客-程序员宅基地

数字图像基础图像取样与量化图像的质量层次:对比度像素间的基本关系(考)图像取样与量化取样:图像空间坐标的离散(空间坐标(x,y)的数字化)量化:图像函数值(灰度值、幅度值)的离散、量化编码采样间隔(减小)决定了图像的空间分辨率(增加)采样间隔越大,所得图像像素数越少,空间分辨率低,质量差,严重时出现马赛克效应;采样间隔越小,所得图像像素数越多,空间分辨率高,图像质量好,但数据量大。量化编码长度(增加)决定灰度分辨率(增加)显示分辨率越大越清楚图像的质量层次:1.灰度级:像素的取值范围为

linux 增加磁盘缓冲实例,Linux下SSD缓存加速之bcache使用_吹亚吹的博客-程序员宅基地

在Linux下,使用SSD为HDD加速,目前较为成熟的方案有:flashcache,enhanceIO,dm-cache,bcache等,多方面比较以后最终选择了bcache。 bcache 是一个 Linux 内核块层超速缓存。它允许使用一个或多个高速磁盘驱动器(例如 SSD)作为一个或多个速度低得多的硬盘的超速缓存。bcache 支持直写和写回,不受所用文件系统的约束。默认情况下,它只超速缓存...

stage.width|stage.height|stage.stageWidth|stage.stageHeight区别_云飞扬扬的博客-程序员宅基地

我们先看下帮助文档里的说明:stage.width:指示显示对象的宽度,以像素为单位。宽度是根据显示对象内容的范围来计算的。如果您设置了 width 属性,则 scaleX 属性会相应调整,如以下代码所示:stage.height:指示显示对象的高度,以像素为单位。高度是根据显示对象内容的范围来计算的。如果您设置了 height 属性,则 scaleY 属性会相应调整,如以下代码所示:

算法唯手熟尔(PAT剩余清单 or leetcode)---希望可以日更_xiaoyuyulala的博客-程序员宅基地_pat或leetcode

算法笔记的前十章一眨眼就过去了,每天保证至少一题,题源随意,题目思路都会写在代码思路中希望可以日更吧2020/3/5PAT A1119_C#include &lt;iostream&gt;#include &lt;stdio.h&gt;#include &lt;stdlib.h&gt;#include &lt;math.h&gt;#include &lt;string&gt;#...

可以用TeamViewer远程玩游戏吗?_qq_29496709的博客-程序员宅基地_teamviewer远程打游戏

一些使用TeamViewer的用户想知道使用TeamViewer可不可以远程家里的电脑在休闲时间进行游戏,所以今天小编就为大家来介绍一下。首先告诉大家:TeamViewer软件是可以远程计算机进行游戏的。接下来跟大家详细说一下操作步骤:图1:远程游戏的条件先在两台计算机上都安装TeamViewer软件,例如:设备1控制设备2,需要在两台设备上都装上TeamViewer软件,但是要注意设备1上的Te...

Binder学习之addService_cs_lht的博客-程序员宅基地

接上一篇:http://blog.csdn.net/cs_lht/article/details/8160968我们看一下MediaPlayerService是如何把自已添加到ServiceManager中的。代码路径:framework/base/media/libmediaplayerservice/MediaPlayerService.cppvoid MediaPla

推荐文章

热门文章

相关标签