· Научиться выполнять отладку рекурсивных функций;
· Научиться использовать рекурсии в С-программах.
Задание: Разработать программы, содержащие следующие задачи:
Задача 1. В ней должна быть: а) создана программа определения факториала числа n, использующая цикл (любой – for или while); б) составлено описание рекурсии математическими терминами; в) разработана схема рекурсивных вызовов; г) составлена программа определения факториала числа n, использующая рекурсию; д) проанализирована работа рекурсивной функции с помощью отладчика; е) сделан сравнительный анализ работы двух программ.
Задача 2. Написать программу рекурсивной функции Аккермана с использованием основной функции ackr и вспомогательной функции smacc (см. лекцию 10). Составить описание рекурсии математическими терминами. Разработать схему рекурсивных вызовов. Проанализировать работу рекурсивной функции с помощью отладчика.
Задача 3. Подобрать собственный пример, иллюстрирующий работу рекурсивной функции. Составить программу, выполнить ее анализ. Тематика может быть любой.
Примечание: предметную область задач выбрать самостоятельно. При решении задач использовать материалы лекции 10. В разработанных программах должен соблюдаться стиль программирования, каждый раздел ее должен быть прокомментирован, программы должны носить индивидуальный характер.
В качестве примера приведем программу определения числа х в степени n, где x и n – целые числа, построенной на основе рекурсии. Рекурсивная функция названа power().
// Программа для иллюстрации функции power()
#include <iostream.h>
#include <stdlib.h>
#include<conio.h>
int power(int, int); // Прототип функции power()
void main(void)
{
int n,x;
clrscr(); // Очистка экрана
cout << " Введите x " << endl;
cin >> x;
for (n=0; n<4; n++)
cout << x << " в степени " << n
<< " равно " << power(x,n) << endl;
return 0;
}
int power(int x,int n)
{
if (n<0) {
cout << "Недопустимый аргумент функции power.\n";
exit(1);
}
if (n>0)
return( power(x, n-1)*x);
else return (1);
}
Результаты работы программы:
Введите х
4
4 в степени 0 равно 1
4 в степени 1 равно 4
4 в степени 2 равно 16
4 в степени 3 равно 64
Примечание: в задаче 3 представлены только отдельные ее фрагменты. Аналогично должны быть разработаны и представлены остальные задачи на рекурсию. Отчет должен содержать титульный листок, постановку задач, алгоритм их решения, отлаженные программы на алгоритмическом языке и результаты расчета. На кафедру сдать отчет на бумажной основе, выполненный в Word’e и исходные файлы программ.
12. СПИСКИ И ИХ РЕАЛИЗАЦИЯ В ВС++.
Цель работы:
· Научиться разрабатывать программы с простейшими списками;
· Научиться моделировать списки типа стек и очередь;
· Научиться использовать списки в С-программах.
Задание: Разработать программы, содержащие следующие задачи:
Задача 1. Создать несвязанный числовой список в виде массива. Распечатать его. Выполнить следующие операции с несвязанным списком: а) найти максимальный по модулю элемент; б) вставить за ним новый элемент, равный по величине, но противоположный по знаку; в) исключить первый элемент списка. Новый список распечатать.
Задача 2. Создать связанный числовой список. Распечатать его. Выполнить следующие операции со связанным списком: а) найти максимальный по модулю элемент; б) вставить за ним новый элемент, равный по величине, но противоположный по знаку; в) исключить первый элемент списка. Новый список распечатать.
Задача 3. Создать связанный числовой список типа очередь из 5 объектов. Распечатать его. Выполнить следующие операции со связанным списком: а) добавить два новых объекта в очередь. Распечатать очередь; б) Поменять местами первый и последний объект в очереди. Распечатать очередь; в) Удалить из очереди первых три объекта. Распечатать очередь.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.