首页 > 解决方案 > 代码片段的空间复杂度“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”循环的每次迭代后创建,不应重复使用。所以,
如果我错了,请纠正我。

标签: cspace-complexity

解决方案


在评论部分中写道,空间复杂度将为 O(1)。在我看来,它应该是 O(n)。

对于该代码,时间复杂度为 O(n),空间复杂度为 O(1) - 不管怎样,您都不会使用任何额外的空间n


推荐阅读