递归如果声明帮助

时间:2016-01-26 18:25:23

标签: java recursion

为什么:

public static void splat(String s)
{
    if (s.length() < 8)
    {
        splat(s+s);
    }
    System.out.println(s);
}

不打印********

当splat(“**”)被调用时

3 个答案:

答案 0 :(得分:2)

每次splat都被称为System.out.println(s);执行所以输出

********
****
** 

只打印********这样做:

public static void splat(String s)
{
    if (s.length() < 8)
    {
        splat(s+s);
    }
    else 
    { 
       System.out.println(s);

     }
}

答案 1 :(得分:0)

我假设你的结果是:

splice()

因为你在函数内打印。

如果将println移出函数,则应返回

所需的结果
********
******
****
...

答案 2 :(得分:0)

您应该包含输出。我已经运行了这个并将它放在这里:

********
****
**

原因是当你回想起这样的方法时,if语句第一次出现错误,它会按预期打印'********'。但是它会在最后一次调用时中取出,这意味着它将再次运行该println,其中s为'****'。最后,它将运行原始调用,其中s为'**'。

您应该使用循环来实际更改带有s = s + "**";

的s的值,而不是回忆该方法

例如,使用它而不是if语句:

while (s < 8)
s += "**";

这将持续到's'为'********'

希望这有帮助!