scala 可变参数...递归函数

40 阅读1分钟

一:可变参数

1.1. 可变参数:用来接受同一类型的多个参数
1.2. 格式:参数类型
1.3. 要点:
    1.类型要一致
    2.可变参数必须在列表的最后
def getSum(args:Int*):Int={
  var sum =0
  for(i <- args){
    sum += i
  }
  sum
}

def main(args: Array[String]): Unit = {
  val rst1 = getSum(1,2,3)
  val rst2 = getSum(1,2,3,4)
  val rst3= getSum(1,2)
  println(rst1,rst2,rst3)
}

二:递归函数

2.1. 递归: 在函数内部 自己调用自己
   
2.2. 特点:
     1. 可鞥会导致死循环 一直调用自己

  def f():Unit = {
    println("f函数被调用了......")

    f()
  }
  
  def main(args: Array[String]): Unit = {
    f()
//      while(true){
//        println("f函数被调用了......")
//      }

      println("main")
  }

三:应用场景

3.1. 特点:
     1. 大问题可以拆解为同样性质的小问题
     2. 问题拆解到足够晓得时候 可以直接求解

3.2. e.g:
    求1+2+3+...+99+100的和(5050)
    记f(n) = 1+2+3+4+...+n
    
    f(100) = 1+2+3+...+98+99+100
    f(99) = 1+2+3+...+98+99
    f(98) = 1+2+3...+98
  
    f(100) = f(99) + 100
    f(99) = f(98) + 99
          ......
          ......
    f(1) = 1 (足够小的时候 可以直接求解)
def f(n:Int):Unit = {
 if (n == 1){
   1
 }else {
   f(n-1) + n
 }
}

def main(args: Array[String]): Unit = {
  val rst = f(100)
  println(rst)
}