056_函数递归调用的机制
递归
234
2
package com.atguigu.chapter05
/**
*
* *
*
* @author victor
* *
* @site https://victorfengming.gitee.io/
* *
* @project scala
* *
* @package com.atguigu.chapter05
* *
* @created 2021-03-25 21:54
*/
object DiguiTest01 {
def main(args: Array[String]): Unit = {
test(4)
println("---------")
test2(4)
}
def test(n: Int): Unit = {
if (n > 2) {
test(n - 1)
}
print(n)
}
def test2(n: Int): Unit = {
if (n > 2) {
test2(n - 1)
} else {
print(n)
}
}
/**
* 234---------
* 2
* Process finished with exit code 0
* */
}
函数递归需要遵守的重要原则(总结)
- 程序执行一个函数时,就创建一个新的受保护的独立空间(新函数栈)
- 函数的局部变量是独立的,不会相互影响
- 递归必须向后退出递归条件逼近,否则就是无限递归,死鬼了
- 当一个函数执行完毕,后者遇到return,就会返回,遵守谁调用,就将结果返回给谁