递归函数1

39 阅读1分钟

案例1:写函数,完成功能:计算a的n次方

 /*
* 写函数,完成功能:计算a的n次方
* f(a,n) = a * f(a, n-1)
**/
 def f(a:Int, n:Int): Int = {
   if(n == 0){
     1
   } else {
     a * f(a, n - 1)
   }
 }

 def main(args: Array[String]): Unit = {
   val s = f(2,3)
   println(s) // 8
 }

汉诺塔游戏

// 汉诺塔游戏
def f(n: Int, A: String, C: String, B: String): Unit = {
  if (n == 1) {
    println(s"$A$C")
  } else {
    // 1. 把 n-1 个盘子从 A 移到 B(借助 C)
    f(n - 1, A, B, C)
    // 2. 把第 n 个盘子从 A 移到 C
    println(s"$A$C")
    // 3. 把 n-1 个盘子从 B 移到 C(借助 A)
    f(n - 1, B, C, A)
  }
}

def main(args: Array[String]): Unit = {
  f(5, "A", "C", "B")
}