参数

30 阅读1分钟

元组

// 元组: 容器,可以装入不同的数据类型的数据
 // 1. 定义一个元组,使用() 把数据包起来,就可以了
 val t = (1, "1", 1.2, false,0)

 // 2. 取出元素,通过   ._数字序号 来访问
 // 去除1.2
 println(t._3)
 // 取出false
 println(t._4)

默认值

// gender:
def greet(name:String="哈哈", age:Int=18,gender:String="女"):Unit = {
  println(s"我是${name}, 我今年${age}, ${gender}")
}

def main(args: Array[String]): Unit = {
   greet("小花", 18) // 默认值
   greet("小明", 20, "男")
   greet()


// 怎么指定变动一个参数,其他默认呢
scala
// 设置age为20,其他来自默认值
// 传参数的时候,指定参数的名字
greet( age=20 )
greet( gender="男", age=20 )

传入不同数量的参数

// 传入不同数量的参数
  // 第一个参数是学生的名字,从第二个参数开始,是这个学生某个学科的得分
  // 变参:允许传入不同个数,但是类型相同的参数
  // Int* (关键字)
  // array 数组

  def greet(name:String, score: Int* ):Unit = {
    // score 是一个列表
    var total:Double = 0
    for(i <- score){
      total += i
    }

    val avg = total / score.length
    println(s"${name},平均分是${avg}")
  }

  def main(args: Array[String]): Unit = {
    //
    greet("小花",90,100,98,100,60)
    greet("小明",80,88)
    greet("小张",90)
  }
}

递归函数


// 1. 可能造成死循环
// 2. 适合解决一类问题:
//   (1) 可以吧大问题,拆分成同样的小问题
//   (2) 当问题足够小的时候,可以直接求解

// 1 + 2 + 3 + 4 + ... + n
  def sum(n:Int): Int = {
    if(n==1){
    1
  } else {
      sum(n - 1) + n
    }
  }
  def main(args: Array[String]): Unit = {
val s = sum(100)
    println(s)
    
    // 求阶乘
 // f(n) = 1*2*3*4*5······*n
def f(n:Int): Int ={
  if(n == 1){
    1
  } else {
    f(n-1) * n
  }

}
def main(args: Array[String]): Unit = {
  val s = f(4)
  println(s) // 4*3*2*1=24