使用递归实现字符串的反转

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

转载于:https://www.cnblogs.com/cn-chy-com/p/10839678.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值