Литература Сущность рекурсии


Download 357.58 Kb.
bet11/12
Sana25.01.2023
Hajmi357.58 Kb.
#1120801
TuriКонтрольные вопросы
1   ...   4   5   6   7   8   9   10   11   12
Bog'liq
3Рекурсия и рекурсивные алгоритмы

20.10.2016 в 22:29

все прозрел!)) вот оно, решение!))
Получается, что здесь есть еще одна, третья операция, а именно — запись в стек.
Т.е. перед вызовом функции, например, Rec (1), вначале записывается состояние предыдущей функции Rec(2) — ее переменная а, значение этой переменной 2 и точка вызова (после которой должна будет выполняться команда whriteln)
И второй важный момент, что в стек записывается не отдельная команда, а функция целиком, состоящая из нескольких команд. Тогда вполне наглядно видно, что функция началась, но не закончилась.
Спасибо огромное! Выручили, сняли камень с души))
Занес сайт в закладки, буду заходить))




  • Макс

    21.10.2016 в 20:58

    а можно еще похожий вопрос, вот есть такой код, стартовое значение 1. Он вроде проще, но там есть одна закавыка
    if a<11 then
    writeln(a);
    Rec(a+1);
    Закавыка в том, что вызов функции не входит в тело условия if и тогда получается, что функция будет вызываться снова и снова. Но реально пример работает и выводит последовательность от 1 до 10. Почему функция больше не вызывается?




  • Taras

    22.10.2016 в 01:37

    Функция вызывается, просто больше ничего не печатает.




  • Макс

    22.10.2016 в 20:28

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




  • Taras

    22.10.2016 в 20:32

    Да, теоретически бесконечно. Практически, либо стек переполнится и программа аварийно завершится, либо «умный» компилятор, поняв, что программа фактически ничего не делает, уберет лишние вызовы.




  • Макс

    23.10.2016 в 23:16

    Спасибо! В принципе об этом говорилось у вас здесь в самом начале, но одно дело когда просто написано, другое — когда сам это реально видишь))
    В общем, еще раз — спасибо огромное, что помогли разобраться!




  • М.В.

    24.04.2018 в 08:26

    В самом первом примере последовательность выводимых чисел будет равна 3 2 1 0.




  • М.В.


    Download 357.58 Kb.

    Do'stlaringiz bilan baham:
  • 1   ...   4   5   6   7   8   9   10   11   12




    Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
    ma'muriyatiga murojaat qiling