3.1. Теоретические сведения о рекурсивных функциях
Примитивно-рекурсивными функциями называются функции, которые можно выразить через элементарные применением конечное число раз операторов суперпозиции и примитивной рекурсии.
Частично-рекурсивными функциями называются функции, которые можно выразить через элементарные применением конечное число раз операторов суперпозиции, примитивной рекурсии и минимизации.
Элементарные функции:
- Ноль – функция без аргументов, всегда возвращает ноль –
- Инкремент – функция повышения значения переменной на единицу, возвращает x+1 –
- Проекция – возвращает i-тую проекцию вектора переменных (то есть i-тую переменную) -
Операторы:
- Суперпозиция – оператор, позволяющий передавать функции в качестве параметра значение, возвращённое другой функцией.
Пример:
- Примитивная рекурсия – оператор, позволяющий вычислять значение
на основе
. При применении оператора примитивной рекурсии к функции
задаются две функции
и
такие, что:
- Оператор минимизации – оператор, осуществляющий последовательный перебор всех возможных значений переменной пока её значение не будет удовлетворять некоторому условию. Формально – для заданной
находит
. Если
, то оператор минимизации зацикливается и функция не выполняется. На практике используется оператор минимизации вида
3.2. Дерево структурного анализа
![](http://ok-t.ru/studopediasu/baza2/451284752882.files/image053.jpg)
3.3. Доказательство ЧРФ
Пусть
. Тогда:
![](http://ok-t.ru/studopediasu/baza2/451284752882.files/image057.gif)
![](http://ok-t.ru/studopediasu/baza2/451284752882.files/image059.gif)
Докажем действия. Введём функции для каждой операции
![](http://ok-t.ru/studopediasu/baza2/451284752882.files/image061.gif)
![](http://ok-t.ru/studopediasu/baza2/451284752882.files/image063.gif)
![](http://ok-t.ru/studopediasu/baza2/451284752882.files/image065.gif)
![](http://ok-t.ru/studopediasu/baza2/451284752882.files/image067.gif)
![](http://ok-t.ru/studopediasu/baza2/451284752882.files/image069.gif)
![](http://ok-t.ru/studopediasu/baza2/451284752882.files/image071.gif)
![](http://ok-t.ru/studopediasu/baza2/451284752882.files/image073.gif)
![](http://ok-t.ru/studopediasu/baza2/451284752882.files/image075.gif)
![](http://ok-t.ru/studopediasu/baza2/451284752882.files/image079.gif)
Докажем константы:
![](http://ok-t.ru/studopediasu/baza2/451284752882.files/image081.gif)
![](http://ok-t.ru/studopediasu/baza2/451284752882.files/image083.gif)
Применим оператор минимизации:
![](http://ok-t.ru/studopediasu/baza2/451284752882.files/image085.gif)