Member 13037163 Ответов: 1

Понимание рекурсии в языке Си


Итак, я бродил по сети, пытаясь понять концепцию рекурсии, и как раз тогда, когда мне казалось, что я ее понял.

Я не могу спокойно понять, как работает приведенный ниже фрагмент кода. Он используется для отображения всех элементов в двоичном дереве (порядок Инфиксов).

Может ли кто-нибудь, пожалуйста, разбить его и объяснить каждый шаг.

Заранее спасибо.

Что я уже пробовал:

void Infix(struct BinaryNode *root){
         if(root){
            Infix((root) -> left);
            printf("%3d", (root) -> data);
            Infix((root) -> right);
        }
    }

Maciej Los

Вы должны использовать отладчик.

PIEBALDconsult

Я рекомендую нарисовать диаграмму и проследить за ней пальцем.

CPallini

Я рекомендую следовать пегой рекомендации.

1 Ответов

Рейтинг:
2

Patrice T

Цитата:
Может ли кто-нибудь, пожалуйста, разбить его и объяснить каждый шаг.

Нет, используйте отладчик, чтобы увидеть, что делает программа, вы узнаете гораздо больше и быстрее.

Когда вы не понимаете, что делает ваш код или почему он делает то, что делает, ответ таков: отладчик.
Используйте отладчик, чтобы увидеть, что делает ваш код. Просто установите точку останова и посмотрите, как работает ваш код, отладчик позволяет вам выполнять строки 1 на 1 и проверять переменные по мере их выполнения, это невероятный инструмент обучения.

Отладчик-Википедия, свободная энциклопедия[^]
Освоение отладки в Visual Studio 2010 - руководство для начинающих[^]
Базовая отладка с помощью Visual Studio 2010-YouTube[^]

Отладчик здесь для того, чтобы показать вам, что делает ваш код, и ваша задача-сравнить его с тем, что он должен делать.
В отладчике нет никакой магии, он не находит ошибок, он просто помогает вам. Когда код не делает того, что ожидается, вы близки к ошибке.