【问题标题】:Calculation of Cyclomatic Complexity for Pseudocode伪代码的圈复杂度计算
【发布时间】: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

是真的吗?

【问题讨论】:

  • 请回答任何人

标签: cyclomatic-complexity


【解决方案1】:

首先,让我们识别每个语句。我在这里使用字母,但也可以是数字。

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
  • 请注意,第二条语句有两个条件/谓词/决策点(或任何您称呼它们的名称),因此我将它们命名为 B 和 C。
  • 我将使用end while (G) 作为退出点。

现在我们可以绘制控制流图(CFG)了:

最后,以三种不同的方式计算圈复杂度 (M):

  1. M = E-V+2*K = 9-7+2*1 = 4

  2. M = C + 1 = 3 + 1 = 4

  3. M = 区域(CFG) = 4

地点:

  • E=边数

  • V=顶点数

  • K=图表组件数

  • C=条件/决策点数

【讨论】:

    【解决方案2】:

    与上述逻辑相比,@osEduSol 提到的是正确的,即

    M=(决策点)+ 1

    其中 M 是圈复杂度

    有3个决策点

    我得到了答案 4

    【讨论】:

      猜你喜欢
      • 2011-10-04
      • 1970-01-01
      • 2022-01-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-19
      • 2023-03-27
      • 1970-01-01
      相关资源
      最近更新 更多