C 代码段的空间复杂度“;对于(i=1;i<;=n;i&x2B;&x2B;){intx=10}&引用;

C 代码段的空间复杂度“;对于(i=1;i<;=n;i&x2B;&x2B;){intx=10}&引用;,c,space-complexity,C,Space Complexity,关于问题,对于代码片段 for (i = 1; i <= n; i++) int x = 10; (i=1;i)的 评论部分写到空间复杂度将是O(1)。根据我的说法,它应该是O(n) 对于该代码,时间复杂度为O(n),空间复杂度为O(1)-不管n如何,都不使用任何额外的空间 评论部分写到空间复杂度将是O(1)。根据我的说法,它应该是O(n) 对于该代码,时间复杂度为O(n),空间复杂度为O(1)-您不需要使用任何额外的空间,不管n如何。我认为您缺少的是范围不必使用大

关于问题,对于代码片段

    for (i = 1; i <= n; i++)
       int x = 10;
(i=1;i)的

评论部分写到空间复杂度将是O(1)。根据我的说法,它应该是O(n)

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

评论部分写到空间复杂度将是O(1)。根据我的说法,它应该是O(n)


对于该代码,时间复杂度为O(n),空间复杂度为O(1)-您不需要使用任何额外的空间,不管
n
如何。

我认为您缺少的是范围不必使用大括号形成。您显示的代码完全等同于:

for (i = 1; i <= n; i++)
{
    int x = 10;
}

for(i=1;i我认为您缺少的是范围不一定要使用大括号形成。您显示的代码完全等同于:

for (i = 1; i <= n; i++)
{
    int x = 10;
}

for(i=1;i)在每次迭代中,相同的内存用于
x
。它不需要保存以前的值,这样就可以重用它。@Barmar,你能告诉我我的推理有什么错误吗?如果我将x=10;内为循环,外为循环,内为main(),那么它将是O(1)。是否应该在for循环的每次迭代中创建内存空间?是的,但每次都会回收内存。一次不会有多个
x
。明白了。谢谢@Barmar。每次迭代中
x
都使用相同的内存。它不需要保存以前的值,因此可以重复使用。@Barmar,可以吗告诉我我的推理有什么错误?如果我写x=10;内为循环,内为循环,外为循环,内为main(),那么它将是O(1)。在for循环的每次迭代中不应该创建内存空间吗?是的,但是每次都会回收内存。一次不会有超过一个
x
。明白了。谢谢@Barmar。