Вы не указали, ожидали ли вы другого результата, или вам просто было любопытно узнать о результате и почему;
Почему для вашего примера fun(90)
Logi c полностью возвращается из функции только тогда, когда n
больше 100 во время самого вызова секунда . Если n
больше 100 во время вызова fun(n + 11)
, это только возврат результата к следующей рекурсии.
Вот псевдо-трассировка вашей функции:
In fun with 90 <= Initial call
In fun with 101 <= first 'inner' (n+11) call
In > 100 with 101 and returning 96 <= greater than 100 condition
In fun with 96 <= second 'outer' call
In fun with 107 <= fall through as n < 100 to 'inner' (n+11) call
In > 100 with 107 and returning 102 <= greater than 100 condition
In fun with 102 <= second 'outer' call
In > 100 with 102 and returning 97 <= greater than 100 condition
97