scala初学者入门练习题3

本文通过多个实例深入探讨Scala语言的基本语法和高级特性,包括条件判断、循环、递归函数及字符串操作等,旨在帮助读者理解并掌握Scala编程的核心概念。

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

import scala.io.StdIn
object Example extends App {
  println("请输入数字:")
  val num =StdIn.readInt()
  signum(num)
  def signum(num : Int){
    if (num > 0){
      println(1)
    }else if(num < 0) {
      println(-1)
    }else{
      println(0)
    }
  }
}

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

object Example extends App {
  for (i <-0 to 10 reverse){
    println(i)
  }
}

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

object Example extends App {
  countdown(10)
  def countdown(n : Int): Unit ={
    for (i <- 0 to n reverse){
      println(i)
    }
  }
}

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

object Example extends App {
  var t :Long = 1
  for(i <- "Hello"){
    t = t * i.toLong
  }
  println(t)
}

5.同样是解决前一个练习的问题,请用StringOps的foreach方式解决

object Example extends App {
  var t :Long = 1
  "Hello".foreach(t *=_.toLong)
  println(t)
}

6.编写一个函数product(s:String),计算字符串中所有字母的Unicode代码(toLong方法)的乘积

object Example extends App {
  product("Hello")
  def product(s : String): Unit ={
    var t : Long = 1
    for (i <- s){
      t *= i.toLong
    }
    println(t)
  }
}

7.把上个练习中的函数改成递归函数

object Example extends App {
  val aa = product("Hello")
  def product(s : String): Long ={
    if (s.length == 1){
      return  s.charAt(0).toLong
    }else{
      s.take(1).charAt(0).toLong*product(s.drop(1))
    }
  }
  println(aa)
}

8.编写函数计算 x n x^n xn,其中n是整数,使用如下的递归定义:
(1) x n = x ∗ x n − 1 x^n=x*x^{n-1} xn=xxn1,如果n是正数的话
(2) x 0 = 1 x^0=1 x0=1
(3) x n = 1 / x − n x^n=1/x^{-n} xn=1/xn,如果n是负数的话
(4)不得使用return语句

object Example extends App {
  val aa = product(-2,2)
  def product(n : Int,x : Int): Double={
    if (n > 0){
      x*product(n-1,x)
    }else if(n < 0) {
      1/product(-n,x)
    }else{
      1
    }
  }
  println(aa)
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值