【发布时间】:2017-04-28 22:27:12
【问题描述】:
给定一个字符串,递归(无循环)计算字符串中小写“x”字符的数量。
countX("xxhixx") → 4
countX("xhixhix") → 3
countX("hi") → 0
我的尝试:
public int countX(String str) {
int sum = 1;
if(str.length()-1==0){
return sum;
}
else{
if(str.charAt(0)=='x'){
return sum+countX(str.substring(1));
}
if(str.charAt(0)!='x'){
return countX(str.substring(1));
}
}
}
我收到以下错误消息:This method must return a result of type int.
甚至不确定我的基本情况是否正确。有什么提示吗?
【问题讨论】:
-
条件句之外没有回报。
-
你可以看出
==和!=是互斥的,但是编译器不能。使用else而不是!=。 -
@chrylis:严格来说,互斥性在这里并不重要。重要的是,这两个 if 用尽了所有可能性。它们可以重叠——因此不会相互排斥——并且仍然可以。相反,它们可能是相互排斥的,但无法涵盖所有可能性。
-
@NPE 确实如此。在这种情况下,它们当然可以,但编译器仍然看不到它。