scala的递归函数2

50 阅读1分钟

练习题

练习1:求a的n次方

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

递归规则:f(a,n)=a * f(a,n-1)

object basic43 {
  def f(a:Int,n:Int):Int = {
    if(n == 0){
      1
    } else {
      a * f(a,n-1)
    }
  }
  
  def main(args: Array[String]): Unit = {
    val rst = f(2,3) //8
    println(rst)
  }
}

练习2:汉诺塔游戏

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

递归规则:f(a,n)=a * f(a,n-1)

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 = {
    //4个盘子,从A移动到C,借助B
    hanoi(4,"A","C","B")
  }
}