案例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)
}
}