今天在写题的时候写了这样一段代码
错误:
if(visited_count[i]%2 != 0) i = nextVisit[i];
if(visited_count[i]%2 == 0) {
i = (i+1) % n;
}
正确:
if(visited_count[i]%2 != 0) i = nextVisit[i];
else {
i = (i+1) % n;
}
本意是:如果一个数为奇数,对i执行相应的逻辑,如果是偶数的化执行另一个逻辑。但是在执行的时候预期结果和我想的不一样,问题就出在两个if的使用上,如果我想实现原有的逻辑,应该用if-else才对,因为if-else执行的是一段逻辑,当其中一个条件执行后,其它的条件就不再执行,而多个if执行的是多个逻辑,在上面的代码中,如果第一个条件执行后,i被修改后如果又满足第二个条件,那就会继续执行,这违背了我们的执行目标
因此,虽然使用多个if对于代码来说可读性更好,但是涉及到对某个变量进行判断且修改的操作,应当使用if else,要区分好二者