递归函数

30 阅读1分钟

递归:在函数内部 自己调用自

应用场景:

  • 1.大问题可以拆解为同样性质的小问题
  • 2.问题拆解到足够小的时候,可以直接求解

特点;可能会导致死循环:一直调用自己

案例1:求1+2+3+.......+99+100的和

def f(n:Int): Int = {
  if(n==1){
    1
  }else{
    f(n-1)+n
  }
}
def main(args: Array[String]): Unit = {
  val rst = f(100)
  println(rst)
}

image.png

案例2:求123*.......*n (n的阶乘)

def f(n:Int): Int = {
    if(n==0){
      1
    }else{
      f(n-1)*n
    }
  }
  def main(args: Array[String]): Unit = {
    val rst = f(0)
    println(rst)
  }
}