Scala递归函数(2)

51 阅读1分钟

起始条件:一个递归的终止条件,确保递归不会无限进行。它处理最简单的情况并返回结果.

递归规则:在这个部分,函数会调用自身,以解决一个更小的子问题。

案例:a的n次方

a的n次方就是n个a相乘。

起始条件:f(a,0) = 1 , f(a,1) = 2

递归规则:f(a,n) = a * f(a, n-1)(当 n ≥ 1)。求它的第n项。

代码:

scss
 体验AI代码助手
 代码解读
复制代码
object basic43 {
  /**
   * 求a的n次方。a*a*a..........a(n个)
   * f(a,0) =1
   *
   * 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 = {
    var rst = f(2,3)
    println(rst)
  }
}

结果:

屏幕截图 2025-10-20 084052.png

案例: 汉诺塔游戏:

代码:

css
 体验AI代码助手
 代码解读
复制代码
object basic44 {
  var i = 1;
  def hanoi (n: Int, A: String, C: String, B: String): Unit = {
    if (n == 1){
      println (s"$i, move 1 from $A -> C")
      i += 1
    } else {
      hanoi(n-1, A, B, C)
      println(s"i, move $n from $A -> $C")
      i +=1
      hanoi(n-1,B,C,A)
    }
  }

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

结果:

屏幕截图 2025-10-20 104258.png

屏幕截图 2025-10-20 104303.png