使用遞歸實現字符串的反轉


public String reverse(String str){
  if(str == null || str.length() <= 1){
    return str;

}

  return reverse(str.subString(1)) + str.charAt(0);

}

return reverse(originStr.substring(1)) + originStr.charAt(0);這行語句中,originStr.charAt(0)是將originStr這個字符串的
第一位拿出來;
而reverse(originStr.substring(1))中的originStr.substring(1)表示把originStr這個字符串的索引為1及之后的字符(也就是originStr字符串
的第二個字符以后的子串,即"23456")拿出來。所以,執行一次遞歸后,“123456”字符串被分解為“23456”+‘1’。
由於return reverse(originStr.substring(1)) + originStr.charAt(0);這行語句中,reverse方法的存在,執行第二次遞歸,此時
originStr=“23456”,所以執行完第二次遞歸后,“23456”分解為“3456”+‘2’。
...依次類推,最后一次調用reverse方法時,也就是originStr = "6",可以看出字符串"6"滿足if(originStr == null || originStr.length() <= 1) 
中的第二個條件,所以執行if條件下的語句,
也就是返回originStr,即字符串"6"。所以整個調用棧就依次返回“6”+‘5’+‘4’+‘3’+‘2’+‘1’ = “654321”。
最后,控制台輸出打印“654321”。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM