我正在研究具有这种设计的代码
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);
}
}
谢谢你
像这样怎么样?
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);
}