起始条件:一个递归的终止条件,确保递归不会无限进行。它处理最简单的情况并返回结果.
递归规则:在这个部分,函数会调用自身,以解决一个更小的子问题。
案例: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)
}
}
结果:
案例: 汉诺塔游戏:
代码:
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")
}
}
结果: