递归函数

30 阅读1分钟

递归函数产生死循环

object inout45 {
  def f():Unit = {
    println("f.....被调用了")
    f()
  }

  def main(args: Array[String]): Unit = {
    f()

    println("over")
  }
}

求1+2+3+...+99+100的和

object inout46 {
  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)
  }
}

斐波那契数列

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

把输入的整数的各个位数上的数值输出来

object inout48 {
  def f(n:Int):Unit = {
    if(n<9){
      println(n)
    }else{
      f(n/10)
      println(n%10)
    }
  }
  def main(args:Array[String]):Unit = {
    f(12345)
  }
}

如果:n==1.直接从A移动到C,否则:1.把n-1个盘子从A移动到B 2.把一个盘子从A移动到C 3.把n-1个盘子从B移动到C

object inout49 {
def f(n:Int,A:Char,B:Char,C:Char):Unit = {
  if(n == 1){
    println(s"${A}--->${C}")
  }else{
    f(n-1,A,C,B)
    println(s"${A}--->${C}")
    f(n-1,B,A,C )
  }
}
  def main(args: Array[String]):Unit = {
    f(4,'A','B','C')
  }
}