簡體   English   中英

如何使用遞歸函數反轉字符串?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM