c - 代码片段的空间复杂度“for (i = 1; i <= n; i++) { int x = 10 } ;”
问题描述
关于这个问题,对于代码片段
for (i = 1; i <= n; i++)
int x = 10;
在评论部分中写道,空间复杂度将为 O(1)。在我看来,它应该是 O(n)。
我的推理:变量“x”不应该在“for”循环的每次迭代后被销毁。根据作用域规则,变量“x”不能在“for”循环之外访问,因为它是在块“{}”中声明、定义和初始化的,但是这个变量“x”是函数“main( )" (假设它是一个 C 代码,它是用 main() 编写的),因此,变量“x”的生命周期将一直存在,直到程序终止,因为函数“main()”的激活记录(堆栈帧)将在程序结束时删除。由于“x”的生命周期一直持续到程序结束,因此,这意味着“x”的内存空间也将在“for”循环的每次迭代后创建,不应重复使用。所以,
如果我错了,请纠正我。
解决方案
在评论部分中写道,空间复杂度将为 O(1)。在我看来,它应该是 O(n)。
对于该代码,时间复杂度为 O(n),空间复杂度为 O(1) - 不管怎样,您都不会使用任何额外的空间n
。
推荐阅读
- swift - RLMException:无法将现有托管嵌入对象添加到列表
- html - 如何对消息框进行分组并将它们居中
- git - 一个文件夹中有多个git repos?
- python - 在蜘蛛中使用它时,我无法在 open cv 中克服这个错误?
- r - 如何加入位置数据(纬度,经度)
- symfony - 如何覆盖核心服务的功能
- ios - 如何使用现有的导航控制器从 swiftui 导航到 viewcontroller
- r - 如何使 tabitem 仅在用户单击后才呈现 - 闪亮的 R
- opencv - 正确的编解码器以 .mpg 扩展名编写视频
- java - 我想在我的 Spring Boot 应用程序中使用调度程序调用 api