Значение этих терминов варьируется в зависимости от вашего контекста. Если бы мы обсуждали их исключительно с точки зрения написания программ, то рекурсивные множества не имеют большого смысла; однако, может быть, я просто столкнулся с этим. Тем не менее, рекурсивные функции являются функциями, которые вызывают себя при выполнении. Вычисление n th числа Фибоначчи является классическим примером, который обычно представлен:
/// <summary>A C# implementation of a function to return the nth Fibonacci number.</summary>
private static int Fibonacci(int n) {
if (n <= 2) {
return 1;
} else {
return Fibonacci(n - 1) + Fibonacci(n - 2);
}
}
Тем не менее, другой контекст для этих терминов в контексте информатики и, в частности, теории вычислений, - это обсуждение формальных языков . В этом контексте рекурсивный набор определяется как набор, для которого существует разрешимая проблема принадлежности. Например, мы знаем, что множество всех натуральных чисел & # x2115; является рекурсивным набором, потому что мы можем определить рекурсивную функцию следующим образом:
Пусть f определяется как функция, где
f (x) = 1 , если x & # x2208; & # x2115; и
f (x) = 0 , если x & # x2209; & # X2115;
Концепция рекурсивного набора важна для концепции вычислимости, поскольку она приводит к рекурсивно перечислимому набору , который является языком, который может быть распознан машиной Тьюринга (т.е. Тюрингу узнаваемым * +1039 *). Это языки, для которых машина Тьюринга может или не может определить, является ли данная строка членом языка, или, другими словами, машина может либо принять , отклонить , или loop. Это в отличие от языка Тьюринга с разрешением , для которого машина будет вводить либо accept , либо reject состояние для данной входной строки.
Это когда понятие рекурсивной функции вступает в игру, поскольку рекурсивная функция (или общая рекурсивная функция) может быть вычислена машиной Тьюринга и останавливается для каждого входа. Где в качестве частичной рекурсивной функции может быть вычислена только для машины Тьюринга без какой-либо гарантии в отношении поведения остановки. Или, по сути, рекурсивная функция является аналогом рекурсивного множества.
Итак, чтобы вернуться к исходному вопросу, в контексте теории вычислений, рекурсивное множество - это то, что может быть сгенерировано (то есть перечислено) или проверено на членство рекурсивной функцией на машине Тьюринга.
Дополнительная литература: