java - 以递归方式检查初学者(不是作业,是我学习的一部分)

标签 java recursion

我创建了这个函数来使用 while 循环检查 abecedarian(如果单词中的字母按字母顺序出现,例如“abdest”,则该单词被称为“abecedarian”)-

public static boolean isAbecedarian(String s) {
                int index = 0;
                char c = 'a'; 
                while (index < s.length()) {
                        if (c > s.charAt(index)) {
                                return false;
                        }
                        c = s.charAt(index); 
                        index = index + 1;

                }
                return true;
        }

我想把这个函数改成递归函数,我已经写了这个函数 -

public static boolean isAbecedarianrec(String s){
                char first = s.charAt(0);
                char second = first ++;
                if (first<second){
                         return isAbecedarianrec(s);
                }

                return false;
}

递归函数没有正常工作,我没有得到预期的结果。请检查并帮助我查明此功能的问题。

注意 - 正如我提到的,这不是一个家庭作业问题,而是我自学 Java 的一部分。

最佳答案

两个问题:

  1. 以下代码 char Second = first++ 应为 char Second = s.charAt(1);

  2. 递归调用应该是return isAbecedarianrec(s.substring(1));

最后,您需要在适当的情况下进行长度检查。在方法入口处,确保字符串至少有 2 个字符,否则返回 true。

使用递归时,您需要记住两件事。首先,递归的输入应该在某种程度上与先前的输入不同。其次,必须有一个有效的停止点,这样您就不会无限递归,从而耗尽内存。

关于java - 以递归方式检查初学者(不是作业,是我学习的一部分),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9871716/

相关文章:

java - Grails oauth 插件 : unable to create a new calendar event in google

java - HttpClient+SSL 可信证书

r - 在 R 中实现幂方法时的无限递归

java - 需要递归地从文本文件中打印老板姓名

R高效递归

java - Netty导致tomcat内存泄漏

java - ModalWindow 在 Opera 中无法正常工作

C - 打印素数列表(递归)

python - 使用递归查找最多 n 项的总和时获取 'shell returned -1073741571'

java - 如何在 @WebMvcTest 中获取 Spring Boot 默认验证响应?