【发布时间】:2016-06-20 11:13:19
【问题描述】:
我刚刚被介绍到递归,我得到了以下代码行:
public class RecursionThree
{
public void run(int x )
{
if(x<5)
run(x+1);
out.println(x);
}
public static void main(String args[] )
{
RecursionThree test = new RecursionThree ();
test.run(1);
}
}
并且输出应该是:5 4 3 2 1。我明白为什么它会打印 5(因为 5
【问题讨论】:
-
你的输出应该是
1 2 3 4 5,每一个都换行。递归作为一个概念可以看作是有一个带有分离(实时)屏幕的相机,其镜头指向其屏幕,这反过来又显示屏幕及其图像在原始图像的屏幕内无休止地重复,除了每次更小.就像你的情况一样。您的方法run()一次又一次地调用run(),每次都给它一个更大的 数字,直到满足条件(在这种情况下,直到数字为5)。 -
输出是 5 4 3 2 1,每个都换行(我运行了代码)但我想我现在明白了,谢谢
-
@shrmn 输出永远不能是
1 2 3 4 5。打印是在递归阶段之后完成的,而不是之前。这将与您所说的完全相反,即5 4 3 2 1。请在发布前检查。 -
我的错,我将
out.println(x);解释为方法中发生的第一件事(条件之前)。干杯! -
我现在明白了!谢谢
标签: java loops recursion methods