Программы > Пример. Рекурсивные функции
  
Пример. Рекурсивные функции
Используйте возможности программирования PTC Mathcad, чтобы определить рекурсивные функции.
Пример 1. Определение факториала
1. Определите функцию Fac, которая вычисляет факториал n. Пометьте функцию с помощью метки "Функция" (Function).
Нажать для копирования этого выражения
2. Рассчитайте значение факториала 6 с помощью функции Fac и проверьте его с помощью оператора факториала PTC Mathcad.
Нажать для копирования этого выражения
Нажать для копирования этого выражения
3. Определите другую функцию Fac с другим условием для n и вызовите функцию, как показано ниже.
Нажать для копирования этого выражения
Нажать для копирования этого выражения
PTC Mathcad выдает тот же результат, поскольку возвращается к предыдущему определению Fac для выполнения расчета.
4. Отключите первое определение функции Fac, чтобы увидеть различие в результатах. Во избежание такой неоднозначности не используйте имена функций повторно.
Пример 2. Расчет наибольшего общего делителя двух положительных целых чисел
1. Запишите рекурсивную функцию GCD, которая рассчитывает наибольший общий делитель двух чисел, т. е. наибольшее целое число, на которое без остатка делятся x и y.
Нажать для копирования этого выражения
2. Вызовите эту функцию с разными значениями.
Нажать для копирования этого выражения
Нажать для копирования этого выражения
Эта программа совпадает со встроенной функцией наибольшего общего делителя gcd:
Нажать для копирования этого выражения
Нажать для копирования этого выражения
Пример 3. Определение n-й итерации функции f(x) в точке a
1. Запишите вложение рекурсивной функции, которое рассчитывает n-ю итерацию функции f(x) в точке a.
Нажать для копирования этого выражения
2. Задайте функцию f(x) и назначьте значение 1 для a.
Нажать для копирования этого выражения
Нажать для копирования этого выражения
3. Вызовите эту функцию с разными значениями.
Нажать для копирования этого выражения
Нажать для копирования этого выражения
Нажать для копирования этого выражения
Нажать для копирования этого выражения
Пример 4. Задание последовательности Фибоначчи (два рекурсивных вызова на инициирование)
1. Запишите функцию fib, которая рассчитывает значение последовательности чисел Фибоначчи для n.
Нажать для копирования этого выражения
2. Задайте вектор k и вызовите функцию fib.
Нажать для копирования этого выражения
Нажать для копирования этого выражения
Пример 5. Определение функции разбиения
1. Запишите рекурсивную функцию part, которая рассчитывает количество различных способов выразить m как сумму положительных целых чисел, не превышающих n.
Нажать для копирования этого выражения
2. Вызовите эту функцию с разными значениями.
Нажать для копирования этого выражения
Нажать для копирования этого выражения
Пример 6. Создание случайного бинарного дерева
1. Напишите рекурсивную функцию Tree, которая создает случайное бинарное дерево.
Нажать для копирования этого выражения
2. Вызовите функцию.
Нажать для копирования этого выражения
Нажать для копирования этого выражения
Пример 7. Поиск высоты бинарного дерева
1. Напишите рекурсивную функцию height, которая возвращает высоту бинарного дерева.
Нажать для копирования этого выражения
2. Вызовите функцию для дерева, созданного в предыдущем примере.
Нажать для копирования этого выражения
* 
Так как Tree создает случайное бинарное дерево, возвращаемая высота изменяется после каждого повторного вычисления.
Пример 8. Настройка решета Эратосфена для поиска простых чисел
1. Используйте функцию ceil, чтобы записать рекурсивную функцию p, которая находит все простые числа меньше n, используя решето Эратосфена.
Нажать для копирования этого выражения
2. Вызовите функцию, чтобы получить вектор всех простых чисел меньше 200.
Нажать для копирования этого выражения