当x=10的时候
if x>4
if x>2
if x>0
每一个都要执行(每一个if 是独立的)
if x>4
else if x >2
else if x>0
else
只执行第一个 (这个每一个if 是互斥的,某个满足,就不会判断后面的)
有时候下面这种可以简化成上面的,比如 if x==4 else if x==3
因为这样的条件本身就是互斥的,不会同时满足,改成if if ,也只会进一个分支,区别只是判断的次数而已,不影响流程。
你的程序性中,如果上面没走过……
如果下面没走过……
如果左边没走过……
如果右边没走过……
和
如果上面没走过……
如果上面走过,左边没走过……
如果上面和左边都走过,下面没走过……
如果上,左,下都走过,右边没走过……
明显是不一样的
if(success != 1 && maze[i][j+1] == 0)
{
visit(i, j+1);
}
else
{
if(success != 1 && maze[i+1][j] == 0)
visit(i+1, j);
else
{
if(success != 1 && maze[i][j-1] == 0)
visit(i, j-1);
else
{
if(success != 1 && maze[i-1][j] == 0)
visit(i-1, j);
}
}
}
赞成 if..... if......if....每句都会执行到
if....else if.....else if....一旦中间有一个if判断为true而进入了,后面的if不会再进行判断
就是这样。
if..... if......if....每句都会执行到
if....else if.....else if....一旦中间有一个if判断为true而进入了,后面的if不会再进行判断
你这种情况不等价的原因是 visit 函数会改变 if 条件中的变量,即 maze 数组。
如果多个if中执行的代码不会修改后续if的条件变量,那么加上else是等价的,否则不等价。
前面的写法,有可能多个IF都执行,但是后面的写法就只会执行一个。。有问题可以百度HI讨论。。