C 程序中使用递归函数的辅助空间?
接下来,我们将了解递归函数调用需要哪些辅助空间。递归函数调用与正常函数调用有何不同?
假设我们有一个函数如下 −
long fact(int n){
if(n == 0 || n == 1)
return 1;
return n * fact(n-1);
}这是一个递归函数。我们用 fact(5) 调用它时,它将在栈中存储地址,如下所示 −
fact(5) ---> fact(4) ---> fact(3) ---> fact(2) ---> fact(1)
由于递归函数会不断地自己调用自己,所以地址被添加到栈中。因此,如果一个函数被递归调用 n 次,它将占用 O(n) 的辅助空间。但这并不意味着如果一个普通函数被调用 n 次,它的空间复杂度就是 O(n)。对于普通函数,当它被调用时,该地址会被推入到栈中。当它完成后,它会从栈中弹出该地址并返回到调用方函数中。然后再次调用它。因此,其空间复杂度为 O(1)。
广告
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP