为什么:
public static void splat(String s)
{
if (s.length() < 8)
{
splat(s+s);
}
System.out.println(s);
}
不打印********
当splat(“**”)被调用时
答案 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 + "**";
例如,使用它而不是if语句:
while (s < 8)
s += "**";
这将持续到's'为'********'
希望这有帮助!