0
我的计划是想打印的递归调用我把这样的数字:为什么我打印的呼叫数量递归在Java中以这种特殊的方式错了吗?
例如:拨打4次
This was written by call number 2.
This was written by call number 3.
This was written by call number 4.
This ALSO written by call number 4.
This ALSO written by call number 3.
This ALSO written by call number 2.
This ALSO written by call number 1.
缩进的假设是这样的了。
我的代码会产生这样的事情,而不是:
This ALSO written by call number 4.
This ALSO written by call number 3.
This ALSO written by call number 2.
This ALSO written by call number 1.
This was written by call number 2.
This was written by call number 3.
This was written by call number 4.
它假设是从我所看到的简单的,但我的输出,否则说。
我的代码,而无需主要方法和构造函数(它们不会影响任何东西),我没有删除却把也是String类型,在前面的空间:
import java.util.*;
public class callNumber
{
Queue intStack = new LinkedList(); // stores call numbers for printing second string
private String st1 = "This was written by call number ";
private String st2 = "This ALSO written by call number ";
int i = 2;
public void callingNum(int num)
{
intStack.add(num);
i = num;
if(num >= 2)
{
callingNum(num - 1);
System.out.println(st1 + num + ".");
st1 = " " + st1;
st2 = " " + st2;
}
if(i == num)
{
while(!intStack.isEmpty())
{
System.out.println(st2 + intStack.remove() + ".");
st2.replaceAll(" ", "");
}
}
i++;
}
'新的String(“‘)'等同于'’”',除了它在堆上创建额外的对象。不要这样做。 – shmosel
@shmosel我修好了。 – Eap123
'而(!intStack.isEmpty())'将清空队列中的第一次调用完成,这只要'num'达到1发生。 – teppic