you can notice that it may be flowchart or state machine transition
我想知道哪个是实现上述算法流程图的更好选择。
我认为是更好的解决方案。
你怎么看?我想知道你的意见。
main () {
if ( condition == a )
goto A:
elif ( condition == b )
B();
elif ( condition == c )
C();
elif (condition == e )
E();
A:
// do something
B:
if ( condition == c )
// do something
goto C;
elif ( condition == d )
// do somthing
goto D;
C:
if ( condition == d )
// do something
goto D;
D:
if ( condition == a)
// do something
goto A;
elif ( condition == e)
// do something
goto E;
E:
// do something
return;
}
main () {
switch (condition) {
case a:
A();
break;
case b:
B();
break;
case c:
C();
break;
case e:
E();
break;
}
}
fuction A() {
// do something
switch (condition) {
case b:
B();
break;
}
}
function B() {
// do something
switch (condition) {
case c:
C();
break;
case d:
D();
break;
}
}
function C() {
// do something
switch (condition) {
case d:
D();
break;
}
}
function D() {
// do something
switch (condition) {
case a:
A();
break;
case e:
E();
break;
}
}
function E() {
// do something
return ;
}
答案 0 :(得分:0)
我认为这样更好:
main () {
if ( condition != a ) {
if ( condition == b )
B();
elif ( condition == c )
C();
elif (condition == e )
E();
}
for (;;) {
// do something (A)
if ( condition == c ) {
// do something
if ( condition == d )
// do something
}
elif ( condition == d )
// do somthing
if ( condition != a)
break;
// do something
}
if ( condition == e)
// do something
// do something
return;
}
我很确定这相当于你的第一个版本。我不会验证你的第二个版本是否相同,因为它很难阅读,我不会说它必然会实现你链接到的状态机。
答案 1 :(得分:0)
我写的是比我的goto版更好的版本 我把它称为第二个版本。
我认为可读性更好。
你怎么看待这个?
main () {
if ( condition == a )
goto A:
elif ( condition == b )
B();
elif ( condition == c )
C();
elif (condition == e )
E();
A:
// do something
B:
if ( condition == d )
// do somthing
goto D;
C:
// do something
D:
if ( condition == a)
// do something
goto A;
E:
// do something
return;
}