递归函数2

57 阅读1分钟

案例1:求a的n次方

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

案例2:汉诺塔游戏

/*
* 汉诺塔游戏
*
* f(a,n)= a * f(a,n-1)
 */

// A:起点,C表示终点,B表示可以借用的柱子
def f(n:Int, A:String,C:String,B:String): Unit = {
  if(n == 1){
    println(s"${A}${C}")
  } else {
    f(n-1,A,B,C)
    println(s"${A}${C}")
    f(n-1,B,C,A)
  }
}
def main(args: Array[String]): Unit = {
  f(5, "A", "C", "B" )

案例三:打印数字的各个位数

任务描述:对于整数1234,依次输出1,2,3,4这4个数字。

起始条件:f(n) = 输出个位 ,  n<9

递归规则:f(n) = f(n/10)+ 输出个位(当 n ≥ 10)

def f(n: Int) = {  
  if(n < 9){  
    print(n%10)  
  } else {  
    f(n/10)  
    print(n%10)  
  }  
}