Рекурсивные функции

Величину F называют функцией, а величины x 1, x 2,…, xn – аргументами, или независимыми переменными, если известен закон, который для наборов конкретных значений величин x 1, x 2,…, xn задает определенные значения величины F. При этом для каждого набора допускается только одно значение функции.

Функцию называют вычислимой, если известен алгоритм получения ее значений.

Совокупность рекурсивных функций задается следующим образом:

  1. описываются наиболее простые рекурсивные функции, называемые в теории алгоритмов базовыми;
  2. вводятся три приема (оператора), с помощью которых, на основе базовых функций, будем получать новые функции.

К базовым относятся:

    1. функции любого числа независимых переменных, тождественно равные нулю. Их будем обозначать φn,где п - число аргументов. Например:

f=φ 1 (x 1 ), f=φ 2 (x 1, x 2 ), f=φ 3 (x 1, x 2, x 3 ), , f=φn(x 1, x 2, …,xn).

При этом любой совокупности значений аргументов данной функции ставится в соответствие ее значение 0. Например:

φ 1 ( 0 )= 0, φ 2 ( 2,7 )= 0, φ 3 ( 5,45,79 )= 0, φn( 3,45,…,68 )=0.

Будем считать, что п может быть равно нулю, т.е. существует функция, не зависящая ни от одного переменного и равная 0. Обозначим ее φ 0 = 0;

    1. тождественные функции любого числа п независимых переменных. Обозначим их ψn,i. Значением такой функции будем считать значение i‑ го независимого переменного. Например: ψ 3,2 ( 2,10,23 )= 10, ψ 1,1 ( 36 )= 36, ψ 6,4 ( 23,45,69,12,56,78 )= 12, а в общем виде ψn,i(x 1, x 2, …,xi,…,xn)=xi, при этом должны быть выполнены условия 1≤ in, n≠ 0, i ≠0;

3. функции следования одного независимого переменного. Обозначим их с помощью функционального знака λ. Значением функции λ(х) будем считать число, непосредственно следующее за числом, являющимся значением аргумента. Например, λ (5)=6, λ (57)=58 и т.д. В общем случае операцию получения последующего значения будем обозначать λ(х)=х +1.

Теперь перечислим три оператора:

1. оператор суперпозиции, или подстановки, позволяет по функции F n аргументов и по функциям f 1, f 2, …,fn строить новую функцию Φ, такую, что для нее справедливо тождество ΦF(f 1, f 2, …,fn). Например, если в качестве F принять функцию следования λ(х), а в качестве f 1, взять функцию следования λ(у), то с помощью оператора суперпозиции получим новую функцию Θ(у) = λ(λ(у)). Оператор суперпозиции обозначим буквой S и введем знак :=, который читается “по определению есть”. Построение функции Ф из функции F и f1, с помощью оператора суперпозиции будем записывать так: Ф:= S [ λ(x), λ(у) ]. В частности, для рассмотренного примера можно записать Θ:= S [ λ(x), λ(у) ];

2. оператор рекурсии. Этот оператор по двум функциям, одна из которых имеет п -1 независимых переменных (обозначим ее f 1), а другая, кроме указанных независимых переменных, имеет еще две переменных, т.е. зависит от п+ 1 аргументов (обозначим ее f 2). Строим функцию п независимых переменных. Для этого обозначим оператор рекурсии буквой R, а его применение запишем с помощью двух условий:

f (0)= f 1,

f (х +1)= f 2(х, f (х)).

Правила, реализующие эти условия, сформулируем следующим образом:

- значение получаемой функции f для нулевого значения аргумента равно значению исходной функции f 1 (п -1)-го независимого аргумента;

- значение определяемой функции f для каждого последующего значения аргумента равно значению второй из заданных функций f 2, которая зависит от предыдущего значения аргумента и предыдущего значения определяемой функции;

3. оператор минимизации который позволяет по заданной функции, зависящей от n +1 аргументов, строить новую функцию от п аргументов. Обозначим оператор минимизации буквой μ, и его применение запишем в виде f:= μ [ f 1; (x) ], где х - исчезающий аргумент. Смысл работы этого оператора в том, что аргументу х последовательно присваиваются значения (начиная с нулевого) до тех пор, пока функция f 1 не станет равной нулю. После этого полученное значение аргумента х принимают за значение определяемой функции, соответствующее тем значениям основных аргументов, при которых осуществлялся описанный процесс.

Таким образом, рекурсивными называют базовые функции и любые функции, полученные из базовых, с использованием операторов суперпозиции, рекурсии и минимизации.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: