递归函数

50 阅读1分钟

递归函数:自己调用自己,可能会产生死循环

def f(): Unit = {
  println("f()被调用")
  f()
}

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

输出结果

image.png

求1+2+3+......+(N-1)+N的和

object phx34 {
  def f(n:Int): Int = {
   if(n==1)
     1
   else
     f(n-1)+n

  }

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

输出结果

image.png

求123*....*10的和

object phx35 {
  def f(n:Int): Int = {

   if(n==1)
     1


   else
     f(n-1)*n

  }

  def main(args: Array[String]): Unit = {
    var m=f(10)
    println(m)
  }
}

输出结果

image.png

求小米上10个梯回家,每次能上一个楼梯,或者俩个楼梯,则有几种方法回家

object phx36 {
  def f(n:Int): Int = {

   if(n==1) {
     1
   }else if(n==2)
{
  2
}
   else
     f(n-1)+f(n-2)

  }

  def main(args: Array[String]): Unit = {
    var m=f(10)
    println(m)
  }
}

输出结果

image.png

依次输出各位数的数字

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')
}