public static boolean work(String str, char ch)
使用递归来查明 str 是否至少包含一次 ch。
如果存在则返回 true,否则返回 false。
示例
work("whynot", 'n') returns true
work("please", 'z') returns false
public static boolean work(String str, char ch){
//base case
if (str == null || str.equals("")){
return false;
}
//recursive case
if (ch == str.charAt(0)){
return true;
}else {
work(str.substring(1), ch);
}
return false;
}
当 ch 是 str 的第一个字符时,我的代码将正确返回“true”,但当 ch 位于 str 的任何其他部分时,我的代码将返回错误答案“false”。
请解释一下为什么......我以为这是因为我最后一次“return false;”语句覆盖了递归情况 if 中的“true”,但是当我摆脱最后一个“return false;”时我的编译器会提示我缺少返回值。
最佳答案
那是因为您没有返回递归调用的结果。
试试这个:
public static boolean work(String str, char ch){
//base case
if (str == null || str.equals("")){
return false;
}
//recursive case
if (ch == str.charAt(0)){
return true;
}else {
return work(str.substring(1), ch);
}
}
关于java - 修复简单的 java 递归代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31373074/