java - 修复简单的 java 递归代码

标签 java recursion

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/

相关文章:

java - 通过代码创建AEM包

java - jdbc DELETE 更新在 Java 代码中不起作用。

java - Java中的原始有序集合

c++ - 递归获取二叉搜索树的高度

java - 过期的斐波那契兔子

R 中的递归 %in% 函数?

python - 树中的递归

java - getElementsByTagName 不起作用

java - 我想使用 Intent 从 MainActivity 调用 WebView Activity,我在 string-array.xml 中存储了 5 个 url

Java递归查找数组中的最大和