本当に従いたい場合は、従うことができますが、呼び出し履歴を注意深く追跡してください。
main: fun(1)
main: fun(1): prints 1
main: fun(1): fun(2): prints 2
main: fun(1): fun(2): fun(3): prints 3
main: fun(1): fun(2): fun(3): fun(4) [1st call]: prints 4
main: fun(1): fun(2): fun(3): fun(4) [1st call]: returns 4
main: fun(1): fun(2): fun(3): fun(4) [2nd call]: prints 4
main: fun(1): fun(2): fun(3): fun(4) [2nd call]: returns 4
main: fun(1): fun(2): fun(3): fun(4) [3rd call]: prints 4
main: fun(1): fun(2): fun(3): fun(4) [3rd call]: returns 4
main: fun(1): fun(2): fun(3): returns 4
main: fun(1): fun(2): fun(4): returns 4
...
などなど・・・ちょっと面倒です。おそらく、'< 4' を '< 2' に減らして単純化し、 への再帰呼び出しを 2 つだけにすることができますfun()
。そうすれば、フォローしやすくなります。