Лабораторная работа № 12
Лабораторная работа №12.
Разработка программ с использованием функций и рекурсивных функций
Цель работы
Изучение принципов разработки программ с использованием функций и рекурсивных функций в языке Pascal.
Теоретические сведения
Функция в Pascal — это подпрограмма, которая возвращает некоторое значение.
Рекурсия — это механизм, при котором функция или процедура вызывает сама себя. При использовании рекурсии важно предусмотреть условие выхода, чтобы избежать бесконечной рекурсии.
Задания
Задание 1. Факториал числа
Написать рекурсивную функцию для вычисления факториала числа.
pascal
function fact(n: integer): integer;
begin
if n <= 1 then
fact := 1
else
fact := n * fact(n - 1);
end;
Задание 2. Сумма чисел
Написать рекурсивную функцию для вычисления суммы чисел от 1 до n.
pascal
function sumTo(n: integer): integer;
begin
if n = 1 then
sumTo := 1
else
sumTo := n + sumTo(n - 1);
end;
Задание 3. Степень числа
Написать рекурсивную функцию для возведения числа в степень.
pascal
function power(a, b: integer): integer;
begin
if b = 0 then
power := 1
else
power := a * power(a, b - 1);
end;
Задание 4. Числа Фибоначчи
Написать рекурсивную функцию для вычисления чисел Фибоначчи.
pascal
function fib(n: integer): integer;
begin
if (n = 1) or (n = 2) then
fib := 1
else
fib := fib(n - 1) + fib(n - 2);
end;
Задание 5. НОД методом Евклида
Написать рекурсивную функцию для нахождения НОД двух чисел.
pascal
function gcd(a, b: integer): integer;
begin
if b = 0 then
gcd := a
else
gcd := gcd(b, a mod b);
end;
Порядок выполнения работы
1. Изучить теоретические сведения.
2. Написать программы для каждого задания.
3. Протестировать программы на различных входных данных.
4. Оформить отчет.
Требования к отчету
1. Титульный лист.
2. Цель работы.
3. Теоретические сведения.
4. Листинги программ.
5. Результаты тестирования.
6. Ответы на контрольные вопросы.
Контрольные вопросы
1. Что такое рекурсия и в чем её отличие от итерации?
2. Какие условия необходимо предусмотреть при использовании рекурсии?
3. В чем преимущества и недостатки рекурсивных функций?
4. Как работает механизм возврата значений в рекурсивных функциях?
5. Приведите примеры задач, которые удобно решать с помощью рекурсии.