int maxValue = m[0][0];
for (int i = 0; i < N; i++)
{
for (int j = 0; j < N; j++)
{
if (m[i][j] >maxValue)
{
maxValue = m[i][j];
}
}
}
cout<<maxValue<<endl;
int sum = 0;
for (int i = 0; i < N; i++)
{
for (int j = 0; j < N; j++)
{
sum = sum + m[i][j];
}
}
cout<< sum <<endl;
對於上面的代碼,如果我們得出這樣基本獨立的路徑的流程圖將下列六種
路徑1:1 2 3 10 11 12 13 19
路徑2: 1 2 3 10 11 12 13 14 15 18 13 19
路徑3:1 2 3 10 11 12 13 14 15 16 17 15 18 13 19
路徑4:1 2 3 4 5 9 3 10 11 12 13 19
路徑5:1 2 3 4 5 6 8 5 9 3 10 11 12 13 14 15 16 17 15 18 13 19
路徑6:1 2 3 4 5 6 7 8 5 9 3 10 11 12 13 14 15 16 17 15 18 13 19
McCabe的複雜性度量與獨立路徑
所以這裏的問題是根據給定的代碼路徑2,3,4不能被測試(注意循環中的「N」)。那麼是不是有一個基本集合中給出的實際執行路徑? 或根據macabe複雜性度量,我們是否必須更改上面給出的代碼。因爲我的導師說我們必須改變代碼,他說有非結構化的循環,所以我們必須改變代碼。 (我沒有看到一個非結構化的循環) 但我的感覺是,如果我們改變代碼,實際的輸出可能會不同於預期的輸出。所以請有人解釋一下這個問題
McCabe的複雜性沒有被定義爲決策點數加1,至少不是McCabe。有一個定理證明了他的定義等價於決策點加1,這更易於計算: - } –
對;-)對不起,因爲混淆,當然,#decision points + 1只適用於結構化編程。我會更新答案。 –