我想创建一个方法,用另一个字符串递归扩展输入字符串。
public class StringTest {
public static String addZeichenkette(String out, int i) {
out += "bla";
if (i > 0) {
i--;
addZeichenkette(out, i);
}
return out;
}
public static void main(String[] args) {
String out = "Hello";
out = addZeichenkette(out, 7);
System.out.println(out);
}
}
输出应为:
Helloblablablablablablabla
而不是
Hellobla
主要方法必须不受影响(方法调用除外)。
答案 0 :(得分:5)
你忽略了递归调用的返回。
public static String addZeichenkette(String out, int i)
{
if (i > 0)
{
out += "bla";
i--;
out = addZeichenkette(out, i);
}
return out;
}
或者,您可以返回结果addZeichenkette(out, i);
,但两种方式都可以。
正如您所指出的,您需要对其进行修改以避免添加i+1
bla。从i = 0
开始,我们不希望添加任何bla,我们需要检查这一点。
为此,我将bla
的连接移动到条件中。
答案 1 :(得分:3)
您需要返回累积(递归)字符串:
return addZeichenkette(out, i);
不仅仅是i == 0。
public static String addZeichenkette(String out, int i) {
return i > 0 ? addZeichenkette(out + "bla", --i ) : out;
}