本文 我们来说函数的嵌套调用和递归调用
在很多大型项目中 我们肯定不可能将所有逻辑都写在一个函数中 肯定要按功能拆解成多个特定的功能函数
函数并不允许嵌套调用,但是 允许在逻辑代码中嵌套调用
所谓函数嵌套调用 就是在一个函数中调用另一个函数,而被调用的函数 又去调用其他函数
下图 是一个函数多次互相嵌套调用的结构
首先进入函数 main 执行函数代码 然后调用 Fun1 函数 执行 Fun1 执行逻辑代码 走到 调用 Fun2 处 走进 Fun2
执行完毕后 回到 Fun1 剩余部分 继续执行代码
Fun1 执行完毕 回到 main 执行完毕后返回
然后 我们来说函数的递归调用
我们 有一个 从前有座山 山里有座庙 庙里有个老和尚 老和尚给小和尚讲故事 讲从前有座山 山里有个庙 …
反复讲故事 就可以理解为 反复调用自己
计算机中 一个过程 反复调用自己 它就定义为一个递归过程
C语言 支持递归 递归是一种特殊的嵌套调用
我们将递归函数 分为 直接递归调用 和间接递归调用
之间递归调用是指 在方法中之间写明逻辑 执行到某个点 调用自己
例如
int accumulation() {int rox = 3 + 7;printf("%d\n", rox);accumulation();
}
我们在 accumulation中直接调用 accumulation 自身 这就是直接调用
然后
int accumulation() {int rox = 3 + 7;printf("%d\n", rox);yml();
}int yml() {int rox = 3 + 7;printf("%d\n", rox);accumulation();
}
accumulation中 调用了 yml
而 yml 中 又会调用 accumulation
多个函数 互相调用形成闭环 就是 间接递归调用