题目

编写递归函数实现字符串原地逆序反转(不借助额外数组空间)。

输入格式:一行输入一个待反转的字符串。

输出格式:输出反转后的字符串内容,末尾换行。

数据范围与约定:字符串长度不超过 500。

思路与算法

1. 递归参数设计
函数原型设计为 void reverse_str(String / char[]s, int left, int right),传递首尾边界下标。

2. 双向对调与递归
递归基:当 left >= right 时终止递归;否则交换 s[left] 与 s[right],并向内层收缩递归 reverse_str(s, left + 1, right - 1)。

完整程序

import java.util.Scanner;

public class Main {
    // 递归反转字符数组区间 [left, right]
    public static void reverseStr(char[] arr, int left, int right) {
        if (left >= right) {
            return;
        }
        char t = arr[left];
        arr[left] = arr[right];
        arr[right] = t;
        reverseStr(arr, left + 1, right - 1);
    }

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String s = sc.next();
        char[] arr = s.toCharArray();
        reverseStr(arr, 0, arr.length - 1);
        System.out.println(new String(arr));
    }
}

运行示例

输入:

abcd

输出:

dcba