Ваш код вызывает compute
с num = 3
,
, поэтому вы создаете новый объект и вызываете compute
с num = 9 (3 * 3)
,
, поэтому вы создаете новый объект и вызываете compute
с num = 81 (9 * 9)
,
для создания нового объекта и вызова compute
с помощью num = 6561 (81 * 81)
,
для создания нового объекта и вызова compute
для num = 43046721 (6561 * 6561)
,
, чтобы создать новый объект ивызов compute
с num = -501334399 (43046721 * 43046721)
,
...
Упс, переполнение чисел . Ну, в любом случае это продолжается, с num
, имеющим в начале следующие значения:
3
9
81
6561
43046721
-501334399
2038349057
-1970898431
120648705
1995565057
-1876701183
-1454923775
1989099521
2099150849
977076225
1954152449
-386662399
-773324799
-1546649599
1201668097
-1891631103
511705089
1023410177
2046820353
-201326591
-402653183
-805306367
-1610612735
1073741825
-2147483647
1
1
1
1
1
...
Как видите, num
никогда не становится 0
, поэтому вызовы никогда не прекращаются.