06递归
本文最后更新于 2021-08-05 11:42:59
递归
object RecursiveDemo1 {
def main(args: Array[String]): Unit = {
println(factorial(10))
println(factorial(1, 10))
}
def factorial(n: Int): Int = {
if (n == 1) 1
else
n * factorial(n - 1)
}
//尾递归
//加上tailrec还不报错就是尾递归
//这个注解可加可不加
@tailrec
def factorial(multiplication: Long, n: Int): Long = {
if (n == 1) {
multiplication
} else {
factorial(multiplication * n, n - 1)
}
}
}
/*
1.有递归算法
2. 在递归函数内部有结束条件
3. 随着递归深入,有机会到达结束条件
4. 返回值不能推导
尾递归
1.scala对尾递归有优化(优化成迭代算法),不会出现 StackOverFlow
2.在递归的时候只有递归,没有任何其它运算
3.递归走到最深层不用一层一层返回
*/06递归
https://jiajun.xyz/2020/11/03/scala/06递归/