Рекурсия прекрасна, но очень мощна, и когда дело доходит до ее наблюдения, люди обманываются.
Позвольте мне объяснить вам, как я выучил это, когда готовился к GATE (Graduate Aptitude Test in Engineering).
Думайте о каждом вызове функции как 2 части:
- Печать
- Вызов с делением пополам
Теперь все операции будут наложены на более старую до тех пор, пока у нас не выйдет рекурсия, и в функциональном цикле останется только Печать .Мы распечатаем в формате стека т.е. FIFO
Пример, если у нас есть эти элементы в стопке:
Верх: 4 3 7 2 Bottom
Будет напечатано 4 3 7 2.
Теперь ответим на ваш вопрос:
Разбиваем ваши условные выражения на две половины, 1st будет если условие с Print 2nd будет else с его печатью .
Note : будет напечатана только одна часть, т. Е. 1st1 и это тоже без запятых (,).
Я прикрепил изображение ниже, любезно отошлите его, думайте как оператор печати как в стеке, и сначала будет выполняться нижний оператор печати, так как мы закончим из функциизвонки.
Теперь объединяя mystery1 (1), mystery1 (4), mystery1 (16), окончательный результат будет: 1 1, 2, 4 1, 2, 4, 8, 16
PS: Если вы собираетесь давать интервью Amazon, Google или любой компании, основанной на предполагаемом продукте, они зададут вопроссо вкусом рекурсии, и это тоже без использования компилятора, они хотят проверить ваши концепции с помощью программирования.