如何在java中截断最终结果(递归)

问题描述 投票:0回答:1

我正在研究具有这种设计的代码

public static String combine(String first, String second, int n);

所以这需要 2 个字符串并返回 2 个字符串 n 次。前任。输入 ("Good", "Morning", 3) 输出应该是“Good Morning Good”。

我的实现是使用递归,其中基本情况是如果 n 小于或等于 0,则应返回“”。对于任何大于 0 的数字,应连接

first + " " + second + " " + combine(first, second, n-1)
。然后这会导致输出“Good Morning Good Morning Good Morning”,所以现在我正在考虑获取结果的长度,并且只获取从 0 到结果字符串长度一半的子字符串。然而,当我尝试这个时,我得到的是“早安”。我有点困惑如何将其截断为“早安好”。

这是我的代码:

public static String combine(String first, String second, int n) {

        if(n <= 0) {
            return "";
        }
        else {
            String result = first + " " + second + " " + combine(first, second, n - 1);
            int d = result.length();
            
             
            return result.substring(0, d/2);    
            }   
    }

谢谢你

java recursion induction
1个回答
0
投票

像这样怎么样?

public static String combine(String a, String b, int n){
    if(n == 2){
        return a + " " + b;
    }
    return combine(a, b, n-1) + " " + (n % 2 == 1 ? a : b);
}
© www.soinside.com 2019 - 2024. All rights reserved.