递归Java编程
我一直在试图弄清楚为什么输出是321而不是123。我已经试了很多次,看了一遍讲课幻灯片,但我仍然找不到这个问题的答案
public static void main(String[] args) {
printNumber(1);
}
public static void printNumber(int n) {
if(n!=4) {
printNumber(n + 1);
System.out.print(n);
}
}
# 1 楼答案
每次对
printNumber
的调用都会首先调用printNumber(n+1)
,然后打印出一些内容。所以printNumber(n+1)
在printNumber(n)
打印出它的数字之前已经完成了# 2 楼答案
产生这个结果的原因是您放置了递归调用语句
printNumber(n + 1)
在print语句System.out.print(n)
之前,它将不断递归调用它,直到它到达4
。之后,它将打印从上次调用n+1
到n
的数字,就像我们的示例中从3
到1
试试这个:
您将发现输出:
123
原因是在每次递归调用时,它都会打印数字
n
,然后再调用一次n+1
,直到它到达4
# 3 楼答案
变量
n
是12或3你先打印什么,
n
还是n + 1
?您先打印n + 1
,然后再打印n
。所以数字的顺序必须相反