字符串的递归扩展

时间:2014-12-17 19:53:19

标签: java string function recursion expand

我想创建一个方法,用另一个字符串递归扩展输入字符串。

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

主要方法必须不受影响(方法调用除外)。

2 个答案:

答案 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;
}    
相关问题