递归函数:自己调用自己的函数
定义函数
object Base45 {
def f():Unit = {
println("f.....被调用了")
f()
}
def main(args: Array[String]): Unit = {
f()
println("over")
}
}
- 可以被分解为类似子问题
- 当分解到足够小的时候 问题可以直接求解
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 Base48 {
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)
}
}
把输入的整数的各个位置上的数值输出来
object Base49 {
def f(n: Int): Unit = {
if (n < 10) {
println(n)
} else {
f(n / 10)
println(n % 10)
}
}
def main(args: Array[String]): Unit = {
f(12345)
}
}
把数字移到从A移到C 只能小压大
object Base50 {
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')
}
}