我创建了这个函数来使用 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 的一部分。
最佳答案
两个问题:
以下代码
char Second = first++
应为char Second = s.charAt(1);
递归调用应该是
return isAbecedarianrec(s.substring(1));
最后,您需要在适当的情况下进行长度检查。在方法入口处,确保字符串至少有 2 个字符,否则返回 true。
使用递归时,您需要记住两件事。首先,递归的输入应该在某种程度上与先前的输入不同。其次,必须有一个有效的停止点,这样您就不会无限递归,从而耗尽内存。
关于java - 以递归方式检查初学者(不是作业,是我学习的一部分),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9871716/