递归字符串逆序php,使用递归实现字符串逆序

使用递归实现字符串逆序

以下代码可以实现字符串逆序输出:

/** 对字符串s进行逆序,比如abcde逆序后为edcba */

public String reverse(String s) {

return s.length() > 0 ? reverse(s.substring(1)) + s.charAt(0) : "";

}

比如执行方法reverse("abcde");,会返回结果edcba。

怎么理解这个方法呢?

为了便于理解,我们把以上方法进行单行改造,改造后的造价方法如下:

/** 对字符串s进行逆序,比如abcde逆序后为edcba */

public static String reverse(String s) {

boolean isNotEmpty = s.length() > 0;

if (isNotEmpty) {

String substring = s.substring(1);

String reverse = reverse(substring);

String result = reverse + s.charAt(0);

return result;

}

return "";

}

然后对发造后的方法打断点进行Debug,即可弄清递归方法的执行流程。

比如执行reverse("abcde"),具体执行流程如下:

// 首先依次执行如下5个步骤,即方法递归了5次

1. substring("abcde");

2. substring("bcde");

3. substring("cde");

4. substring("de");

5. substring("e");

// 执行完以上5个步骤后,递归结束,方法开始返回,返回值依次为:

5. e

4. d

3. c

2. b

1. a

递归执行流程总结:

方法返回的顺序是与方法执行的顺序倒过来的;

即最后执行的方法,最先返回,最先执行的方法,最后返回;

递归方法执行与返回的整个过程,类似于一个入栈和出栈的过程。

使用递归实现数组逆序

思路:从两端向中间依次交换两端位置的值,直到交换完毕。比如一个长度为6的数组,则交换过程如下:

0:5 交换0和5位置的元素

1:4 交换4和4位置的元素

2:3 交换2和3位置的元素

3:2 交换完毕,退出递归

/**

* 使用递归实现数组倒序;

* 依次交换以下位置元素的值:

* 第1个 与 倒数第1个

* 第2个 与 倒数第2个

* 第3个 与 倒数第3个

* ...

*/

public void reverseArray(int[] array, int start, int end) {

// 依次交换两端位置元素的值

if (start < end) {

int temp = array[end];

array[end] = array[start];

array[start] = temp;

reverseArray(array, start + 1, end - 1);

}

// 顺序交换完毕,输出数组

System.out.println(Arrays.toString(array));

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值