当 A 在 for 循环中调用函数 B 时,如何计算函数 A 的空间复杂度?
How to calculate space complexity of function A when A calls function B in for loop?
我很好奇当 A 在 for 循环中调用函数 B 时,如何计算函数 A 的空间复杂度和辅助空间。 让我们描述两个示例:
案例1:什么是空间复杂度和函数A
的辅助空间
void A(int k) {
int c = 25;
for (int i = 0; i < k; i++) {
B();
}
}
void B () {
int d = 5;
}
案例2:什么是空间复杂度和函数A
的辅助空间
void A(int k) {
int c = 25;
for (int i = 0; i < k; i++) {
int d = 25;
}
}
这两种情况有什么区别?(当然如果有区别(
循环(如图所示(不会增加空间复杂性。 在循环的每次迭代中,都会分配B
的堆栈帧,然后丢弃。B
不会在内部分配内存,因此其空间消耗为 O(1(,A
也是如此。
如果代码如下所示:
std::vector<int> B(int i) {
std::vector<int> result(i);
// Do something with result;
return result;
}
void A(int k) {
std::vector<std::vector<int>> storage;
for (int i = 0; i < k; i++) {
storage.push_back(B(i));
}
}
然后我们可以看到,函数的每次调用B
分配 O(k( 空间,它被称为 O(k( 次,所以 A 的空间复杂度是 O(k²(。
相关文章:
- 函数何时会在c++中包含stack_Unwind_Resume调用
- 如何创建一个函数来计算并返回平均值、最大值和最小值
- 如何以及何时使用 getline 函数执行计算?
- (此函数用于计算 SMA).在 FA.exe 中0x00509159引发异常: 0xC0000005:访问冲突读取位置0
- 编译器在构造函数中计算的成员偏移量不正确
- 函数参数计算顺序与 Lambda 捕获评估顺序
- 递归函数用于计算 n 个数字之和的意外输出
- C++ std::string 中是否有任何函数可以计算两个字符串的相同起始字符的总数或任何最佳方法
- 3 函数加主函数 C 程序计算和显示阶乘
- 冰雹序列C 函数需要计算序列的长度.无限循环问题
- C++ 如何在使用哈希函数时计算冲突次数
- 使用幂函数的计算给出了大数字的错误答案
- 我重载了一个运算符*()函数来计算两个矩阵的总和,但编译器提示此错误
- 无法让我的递归函数正确计算字符串中的字母(c ++)
- 我正在尝试编写一个函数来计算C++数字的数字根,但在编译后出现错误
- 仅使用递归函数来计算给定数字的最终总和
- 编译时间评估函数以计算常数
- 如何从通用函数符号计算或指定COFF符号表的"value"?
- C 通过钩住称为每个帧的函数来计算fps
- 我如何使用函数来计算并使用void函数显示