You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Java中通过递归方法实现字符串拷贝(不使用迭代器)

递归实现字符串拷贝方案

你之前触发栈溢出基本是因为没有正确设置递归终止条件,或者substring截取逻辑错误导致递归无法正常退出。递归的核心逻辑分为两部分:基线条件(终止条件)和递归条件,具体实现如下:

public static String buildString(String str) {
    // 基线条件:字符串为空时直接返回空,终止递归
    if (str.isEmpty()) {
        return "";
    }
    // 取当前字符串首个字符,拼接剩余子串的递归调用结果
    return str.charAt(0) + buildString(str.substring(1));
}

逻辑说明

以入参为"abc"为例,递归执行流程如下:

  • 第一层调用:'a' + buildString("bc")
  • 第二层调用:'b' + buildString("c")
  • 第三层调用:'c' + buildString("")
  • 触发基线条件:buildString("")返回空字符串
  • 逐层回溯拼接:"" → "c" → "bc" → "abc",最终返回和原内容完全一致的新字符串。

注意事项

因为Java虚拟机的栈深度存在上限,所以当输入字符串长度特别大的时候依然可能出现栈溢出,这是递归实现的固有特性,常规长度的字符串使用该实现没有问题。

内容的提问来源于stack exchange,提问作者Faith Alone

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 13:15:03