我看过以下代码:
1. void f(int n){
2. if (n>0){
3. f(n/2);
4. System.out.println(n%2);
5. }
6. }
我知道这是一个将十进制数转换为二进制数的递归代码。我遇到的问题是程序如何到达第 4 行。我的意思是当程序在第 3 行再次调用递归函数时,它不会超过第 4 行的代码吗?
还是程序所做的是调用第 3 行的函数,但将第 4 行的结果放入堆栈?(我考虑这种情况是因为我知道递归使用内存堆栈,在这种情况下似乎如此,因为结果以 LIFO 顺序打印)
有什么帮助吗?