我开始学习递归以及它如何用于解决问题。
问题是,该方法调用recur(4)显示什么?
public static void recur (int n)
{
if(n==1)
{
System.out.print(n);
}
else
{
System.out.print(n);
recur(n - 1);
}
}
因为n不等于1,所以它转向重复(n - 1),但这是我对这里发生的事情感到困惑的地方?输出是否会是3,2,1,0?
答案 0 :(得分:1)
将打印:4321
。
如果您致电recur(4)
,请在开始时致电n == 4
。它不是1,所以它进入else块,它打印一个4,然后调用recur(3)
(4-1 = 3)。在那之后,它仍然不是1,所以再一次你去了else块。这次n == 3
,打印出3。然后调用recur(2)
,再次转到else块,打印出2并调用recur(1)。 n现在等于1,因此执行if块,只打印1。
请注意,如果您拥有4321
语句而没有空格,则会获得System.out.print()
。 println()
每次都会把它放在一个新行上,你会得到:
4
3
2
1
但是使用print()
语句且没有间距,您只需获得4321