次のコードを見ました。
1. void f(int n){
2. if (n>0){
3. f(n/2);
4. System.out.println(n%2);
5. }
6. }
これは、10 進数を 2 進数に変換するための再帰コードであることを知っています。私が抱えている問題は、プログラムがどのように行 4 に到達するかということです。プログラムが行 3 で再帰関数を再度呼び出すときに知っていることを意味しますが、行 4 のコードをオーバーパスしていませんか?
それとも、プログラムが 3 行目の関数を呼び出しているのに、4 行目の結果をスタックに入れているのでしょうか。(再帰がメモリスタックを使用することを知っているため、この状況を検討します。この場合、結果が LIFO 順序で出力されるため、そう思われます)
何か助けはありますか?