软考软件设计师McCabe环路复杂度,09年的两个题,为什么不一样?

2025-03-13 08:33:59
推荐回答(4个)
回答1:

这个啊,我也困惑了好久,后来找资料看了下,计算方法其实有3种:

环形复杂度定量度量程序的逻辑复杂度。描绘程序控制流的流图之后,可以用下述3种方法中的任何一种来计算环形复杂度。
(1)流图中的区域数等于环形复杂度。
(2)流图G的环形复杂度V(G)=E-N+2,其中,E是流图中边的条数,N是结点数。
(3)流图G的环形复杂度V(G)=P+1,其中,P是流图中判定结点的数目。

自己是这样理解的:

       这种环路度量法,计算的思路是这样的:它是考虑控制的复杂程度,即条件选择的分支繁杂程度。

       这个可能比较抽象,还是用例题来说吧。看图:

分别用三种方法来计算2道题

第一题图到了c开始条件判断形成分支D,E;E这里又按条件来判断是否继续到F还是按一个自环做循环然后再到F,然后再回到B

(1)流图中的区域数等于环形复杂度。

        注意区域块可以看作是按不同条件形成的数据操作分支块,比如橙色块就可以看做满足Z

所以按区域划分:上图3块,下图4块。复杂度分别是:3,4
(2)流图G的环形复杂度V(G)=E-N+2,其中,E是流图中边的条数,N是结点数。

有了前面的分析,现在就好做了:

上图:8-7+2=3

下图:9-7+2=4(注意E不是10,因为G节点的自环弧线要忽略掉)
(3)流图G的环形复杂度V(G)=P+1,其中,P是流图中判定结点的数目。

      判断节点:

      上图:C,E,2个点,复杂度2+1=3

      下图:CED,3个点,复杂度3+1=4

回答2:

计算方法其实有3种:

环形复杂度定量度量程序的逻辑复杂度。描绘程序控制流的流图之后,可以用下述3种方法中的任何一种来计算环形复杂度。


(1)流图中的区域数等于环形复杂度。


(2)流图G的环形复杂度V(G)=E-N+2,其中,E是流图中边的条数,N是结点数。


(3)流图G的环形复杂度V(G)=P+1,其中,P是流图中判定结点的数目。


自己是这样理解的:

       这种环路度量法,计算的思路是这样的:它是考虑控制的复杂程度,即条件选择的分支繁杂程度。


回答3:

当然不同 了,没看到G点有个回路吗?额

回答4:

应该是7。
至于为什么 你好好看题