java - 为什么我在 Java 中遇到 stackoverflow?

标签 java recursion stack-overflow

我有一个 int,“count”,它在每次递归后加一,但我还有一个 if 语句,一旦 int 等于或大于另一个整数就停止递归。不知何故,if 语句被忽略了。

public static boolean wildcard(String x, String y, int substring, int count) {
    if (count >= y.length()){
        System.out.println("asdf");
        return true;
    }

    if (x.charAt(count) == y.charAt(count)){
        System.out.println("ALSKDFJKL");
        return wildcard(x, y, substring, count++);
    }
    if (y.charAt(count) == '*'){
        return wildcard(x.substring(substring), y, substring++, count);


    System.out.println("wildcard end");
    return false;
    }

最佳答案

代替 return wildcard(x, y, substring, count++); 试试 return wildcard(x, y, substring,++count);

count++ 是一个后递增(意味着它会在方法返回后递增)

出于同样的原因,您可能还想更新 return wildcard(x.substring(substring), y, substring++, count);

此外,您的最后一个 if 语句被破坏了...我认为 System.outreturn false 想要在 如果 block

关于java - 为什么我在 Java 中遇到 stackoverflow?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15825572/

相关文章:

Javascript 无限循环和递归错误

java - 使用 hibernate/spring 数据的三重分层实体映射会导致无限递归循环

java - 将数字字(字符串)转换为其整数值

java - 我怎样才能加快我的多数元素问题集的以下算法?

java - Netbeans ucanaccess

java - 二叉搜索树的字符串表示

java - 无法读取 .txt 文件。 Try Catch 异常结束程序

java - 数组在递归中不保存前一个值(JAVA)

php - 像 stackoverflow 这样的网站是如何运作的?

Android:增加调用堆栈大小