[英]How to reverse a string using a recursive function?
我已經看到很多關於使用遞歸反轉字符串的文章,但是我喜歡使用自己的編碼風格來正確理解它。 無論如何,這里是我的代碼。
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;
}
基本上,當index為-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 = reverse(s.substring(0,index));
(代表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;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.