对于此代码
int count=0;
for(int i=0;i<N;i++)
if(a[i]==0)
count++;
我的消息来源说:
frequency for variable declaration is 2
frequency for assignment statement is 2
但是对于这段代码:
int count=0;
for(int i=0;i<N;i++)
for(int j=i+1;j<N;j++)
if(a[i] + a[j] == 0)
count++;
它说:
frequency for variable declaration is N+2
frequency for assignment statement is N+2.
我无法理解为什么第二个代码的结果是N + 2。我认为变量声明它应该是3。你能告诉我这两个代码部分的区别吗?
答案 0 :(得分:0)
请记住j
在i
循环中声明。因此,它将在循环的每次迭代中声明。 N
的循环有i
次迭代,因此它将被声明为N
次。 i
将被宣布一次,count
将被宣布一次,因此总共会N + 2
声明。
同样适用于作业。
答案 1 :(得分:0)
是。这是正确的,因为j
的每次迭代都会声明i
一次。因此j
为N次,i
和count
则为2次。
在使用相同逻辑的第一种情况下,您将看到有2个声明。
对于赋值语句也是如此,一旦理解了声明逻辑,它就很清楚了。
int count=0; <--- declaration +1
for(int i=0;i<N;i++) <--- int i = 0 <-- +1
for(int j=i+1;j<N;j++) <-- i=0,1,2..N-1 <-- N times
if(a[i] + a[j] == 0)
count++;
答案 2 :(得分:0)
在此 -
int count=0;
for(int i=0;i<N;i++)
for(int j=i+1;j<N;j++)
if(a[i] + a[j] == 0)
count++;
内循环中的 j
被声明为上循环遍历的次数N
次。这是因为对于上循环的每次迭代,内循环再次开始。
count
和i
被宣布一次。因此,您获得N+2
频率。