-1
下面的代码是在回答关于编码蝙蝠一个问题:http://codingbat.com/prob/p101372为什么这个递归方法的顺序很重要?
此解决方案...
public String changeXY(String str) {
if (str=="") {return "";}
else if (str.substring(0,1).equals("x") && str.length()<2) { return "y";}
else if (str.substring(0,1)!="x" && str.length()<2) {return str;}
else if (str.substring(0,1).equals("x") && str.length()>1) {return "y" + changeXY(str.substring(1));}
else if (str.substring(0,1)!=("x")) { return str.substring(0,1) + changeXY(str.substring(1));}
return changeXY(str);
}
但是,为什么没有解决,如果我只是重新排列if语句工作? 当然,顺序无关紧要。有人可以解释为什么在这种情况下订单很重要/无论如何。
因为您的条件并不相互排斥。考虑'if(x == 1 && y == 2){print(“Foo”); } else if(x == 1){print(“Bar”); }'。 – 2015-01-26 22:15:43
很可能是因为你正在用'!='比较字符串。此外,你的测试是多余的 – Dici 2015-01-26 22:18:22
如果不是'!='我会画一张[卡诺图(http://arn.wikipedia.org/wiki/Karnaugh_map)。 – Sylwester 2015-01-27 01:09:15