【发布时间】:2015-08-27 06:48:35
【问题描述】:
while(m<n)
if(x>y) AND (a<b) then
a=a+1
y=y-1
end if
m=m+1
end while
我在计算上述伪代码的圈复杂度,我用捷径得出结论
M=(决策点)+ 1
其中 M 是圈复杂度
我得到了答案 3
是真的吗?
【问题讨论】:
-
请回答任何人
while(m<n)
if(x>y) AND (a<b) then
a=a+1
y=y-1
end if
m=m+1
end while
我在计算上述伪代码的圈复杂度,我用捷径得出结论
M=(决策点)+ 1
其中 M 是圈复杂度
我得到了答案 3
是真的吗?
【问题讨论】:
首先,让我们识别每个语句。我在这里使用字母,但也可以是数字。
A while(m<n)
B,C if(x>y) AND (a<b) then
D a=a+1
E y=y-1
end if
F m=m+1
G end while
end while (G) 作为退出点。 现在我们可以绘制控制流图(CFG)了:
最后,以三种不同的方式计算圈复杂度 (M):
M = E-V+2*K = 9-7+2*1 = 4
M = C + 1 = 3 + 1 = 4
M = 区域(CFG) = 4
地点:
E=边数
V=顶点数
K=图表组件数
C=条件/决策点数
【讨论】:
与上述逻辑相比,@osEduSol 提到的是正确的,即
M=(决策点)+ 1
其中 M 是圈复杂度
有3个决策点
我得到了答案 4
【讨论】: