一、递归函数
自己调用自己的函数
object Base45 {
def f():Unit = {
println("f......被调用了")
f()
}
def main(args: Array[String]): Unit = {
f()
println("over")
}
}
求1+2+3+...+100的和 分解(1+2+3+...+99)+100/(1+2+3...+98)+99
object Base46 {
def f(n:Int):Int = {
if(n == 1)
1
else
f(n-1) + n
}
def main(args: Array[String]): Unit = {
val rst = f(100)
println(rst)
}
}
object Base47 {
def f(n:Int):Int = {
if(n == 1)
1
else if(n == 2) {
2
} else{
f(n-1)+f(n-2)
}
}
def main(args: Array[String]): Unit = {
val rst = f(10)
println(rst)
}
}
把输入的整数1各个位数上的数值输出来
object Base48 {
def f(n:Int):Unit = {
if(n < 9){
println(n)
} else{
f(n/10)
println(n%10)
}
}
def main(args: Array[String]): Unit = {
f(12345)
}
}
目标:在A上有n个盘子,我们需要借助B,把他们都移动到 C 如果: n == 1。直接从 A 移动到 C 否则:
- 把n-1个盘子从A 移动到 B
- 把一个盘子从A移动到C
- 把n-1个盘子从B 移动到 C
object Base49 {
// f(n, A, B, C)
// f(盘子的数量,起点,要借用的柱子,终点)
def f(n: Int, A: Char, B: Char, C: Char): Unit = {
if (n == 1) {
println(s"${A} ---> ${C}")
} else {
f(n - 1, A, C, B)
println(s"${A} ---> ${C}")
f(n - 1, B, A, C)
}
}
def main(args: Array[String]): Unit = {
f(4, 'A', 'B', 'C')
}
}