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”。