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

Java递归实现字符串组合时如何正确截断最终结果?

问题分析与解决

你的核心问题在于递归逻辑错误:每次递归都拼接first + " " + second,导致最终结果是first second重复n次,而非预期的交替出现n个元素。通过截断长度一半来修正的方法完全不可行,因为字符串长度与n并非简单的倍数关系,且会破坏完整单词。

正确的递归实现

根据需求,当输入n时,结果是交替排列的n个元素:第1、3、5...位为first,第2、4、6...位为second,元素间用空格分隔(例如n=3时输出Good Morning Good)。以下是两种可行的递归实现:

实现方式一:逐位累加

public static String combine(String first, String second, int n) {
    if (n <= 0) {
        return "";
    }
    if (n == 1) {
        return first;
    }
    // 先获取n-1个元素的结果,再根据n的奇偶添加对应元素
    String prevResult = combine(first, second, n - 1);
    return prevResult + " " + (n % 2 == 0 ? second : first);
}

实现方式二:成对拼接

public static String combine(String first, String second, int n) {
    if (n <= 0) {
        return "";
    }
    if (n == 1) {
        return first;
    }
    String pair = first + " " + second;
    if (n == 2) {
        return pair;
    }
    // 拼接一对元素后,递归处理剩余n-2个元素
    return pair + " " + combine(first, second, n - 2);
}

测试验证

  • 输入("Good", "Morning", 3)时,两种实现都会返回"Good Morning Good",符合预期。
  • 输入("A", "B", 2)返回"A B",输入("X", "Y", 1)返回"X",均满足需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 06:22:34