Java 如何使用递归函数反转字符串?
我看过很多关于使用递归反转字符串的帖子,但我喜欢使用自己的编码风格来正确理解它。无论如何,这是我的代码Java 如何使用递归函数反转字符串?,java,string,recursion,Java,String,Recursion,我看过很多关于使用递归反转字符串的帖子,但我喜欢使用自己的编码风格来正确理解它。无论如何,这是我的代码 private static String reverse (String s){ String rev = ""; int index = s.length()-1; if(index >= 0){ rev += s.charAt(index); index--; rev += reverse(rev);
private static String reverse (String s){
String rev = "";
int index = s.length()-1;
if(index >= 0){
rev += s.charAt(index);
index--;
rev += reverse(rev);
}
return rev;
}
基本上,当索引为-1时,每个字符的索引都会继续运行,循环停止。它读取字符串的最后一个可能的字符,但此行有错误
rev += rev(str)
这里是迭代法
String dog = "dog";
String rev = "";
int index = dog.length()-1;
while(index >= 0){
rev+=dog.charAt(index);
index--;
}
out.println(rev);
我相信,当该方法调用自身时,您会重置索引的值。也许更好的方法是使用一个重载方法,其中原始调用传入要处理的字符串,然后剩余调用调用一个方法,在该方法中,您传入正在生成的字符串以及正在处理的字符串的剩余部分。递归步骤不包含变异字符串。您需要传递原始字符串的子字符串。
rev=反向(s.子字符串(0,索引))代码>(代表OP发布答案)
现在修好了。太谢谢你了,我索引太晚了,还传了负数
private static String reverse (String s) {
int index = s.length();
index--;
String rev = "";
if(index >= 0){
rev += s.charAt(index);
rev = rev + reverse(s.substring(0,index));
}
return rev;
}
是的,我正在使用java。尝试添加System.out.println(索引)在递归之前查看是否可以看到问题。我不完全理解。。很抱歉,我不熟悉这种递归的东西。假设我们有一个名为“cat”的字符串,索引从2开始,然后是1,然后是0,所以全部打印出来,它确实达到了-1,但它不会通过循环,因为它小于0?那么程序哪里出了问题呢?我把它从rev+=reverse(rev)改为rev+=reverse(s),但它没有解决任何问题。在rev+=rev(str)
之前添加它,你会看到原因。我知道,但它在递减之前添加字母,然后当它返回循环时,它会被跳过,应该返回rev?对吗?好的,这个已经修好了,我只是索引太晚了,现在有意义了,谢谢。