請畫出下面代碼的程序流程圖及對應的流圖,並計算環形複雜度。web
void func(int x,int y){ //畫圖時,不須要考慮此行
while(x>0){ //1
int sum = x+y; //2
if(sum>1){ //3
x--; //4
y--; //5
}else{
if(sum<-1){ //6
a-=2; //7
}else{
a-=4; //8
} //9
} // end of if(sum>1) //10
} // end of while
x = x+y; //11
} // end of func //畫圖時,不須要考慮此行
程序流程圖畫法總結:編程
-
只考慮方法體內代碼。 -
if..else..後必有被兩條箭頭所指節點,能夠爲空白,但必須有數字。 -
保留開始和結尾的空白圓框但不寫數字。
環形複雜度的計算方法:微信
-
流圖中線性無關的區域數等於環形複雜度。 -
流圖G的環形複雜度 V(G)=E-N+2,其中,E是流圖中邊的條數,N是結點數。 -
流圖G的環形複雜度V(G)=P+1,其中,P是流圖中斷定結點的數目。
上述例題的斷定條件是單一的,若是涉及IF a OR b
這種包含複合條件的僞碼,例如:app
IF a OR b
then procedure x
else procedure y
ENDIF
做者:薛勤,互聯網從業者,編程愛好者。
編輯器
本文首發自公衆號:代碼藝術(ID: onblog)未經許可,禁止轉載ui
本文分享自微信公衆號 - 代碼藝術(onblog)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。url