Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОСШИ.docx
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
38 Кб
Скачать
☆

1. Назвіть види повторень, які реалізовані в Пролозі.

Visual Prolog не має конструкцій For, While, Repeat. Не існує прямого способу вираження

повтору. Пролог забезпечує тільки два види повторень – відкат, за допомогою якого

здійснюється пошук багатьох рішень в одному запиті, і рекурсію, в якій процедура викликає сама себе. Visual Prolog розпізнає спеціальний випадок рекурсії, а саме хвостову рекурсію, і компілює її в оптимізовану ітераційну петлю. 2. Дайте визначення поняттю «рекурсивна процедура».

Рекурсивна процедура – це процедура, яка викликає сама себе. В рекурсивній процедурі немає проблеми з запам'ятовуванням результатів її виконання, тому що будь-які обчислені значення можна передавати з одного виклику в інший як аргументи предиката, що рекурсивно викликається. 3. Назвіть основні переваги і недоліки рекурсії.

Рекурсія має три основні переваги:

 вона може виражати алгоритми, які не можна зручно виразити ніяким іншим

чином;

 вона логічно простіше методу ітерації;

 вона широко використовується в обробці списків.

У рекурсії є один великий недолік – вона «з’їдає» пам'ять

4. Де зберігаються значення змінних при рекурсії?

Інформація зберігається в області пам'яті, яка називається стековим фреймом (stack

frame) або просто стеком (stack), який створюється кожного разу при виклику правила. Коли виконання правила завершується, зайнята його стековим фреймом пам'ять звільняється (якщо це не недетермінований відкат), і виконання триває в стековому фреймі правила-батька. 5. Чим відрізняється хвостова рекурсія від звичайної рекурсії?

Ця процедура є хвостовою рекурсією, яка викликає себе без резервування нового стекового фрейму, і тому не виснажує запас пам'яті.

6. Чи можна змінювати значення змінної в VisualProlog? Увага! В Visual Prolog Ви не можете змінити значення змінної.