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

 

 

Рекурсивная функция — это функция, вызывающая саму себя. Следующий код  

демонстрирует простейший пример рекурсии. Всякий раз при выполнении функции 

trouble ( ) происходит ее повторный вызов: 

function trouble ( ) { 

troubleC ); 

Если рекурсивная функция безусловно вызывает саму себя, как функция trouble ( ) 

в нашем случае, возникает бесконечная рекурсия (то есть такое состояние, когда  

функция не прекратит вызывать саму себя никогда). Без проверки условия бесконечная 

рекурсия теоретически привела бы к тому, что программа оказалась бы в бесконечном 

циклическом процессе выполнения функции. На практике, чтобы избежать  

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

заданного условия. Одним из классических примеров применения рекурсии является 

вычисление факториала, который представляет собой произведение всех целых  

положительных чисел, меньших либо равных данному числу. Например, факториал числа 3 

(на математическом языке это записывается как 3!) равен 3 х 2 х 1, то есть 6. Факто- 

риал числа 5 равен 5x4x3x2x1, то есть 120. В листинге 5.1 продемонстрирована 
функция для вычисления факториала числа, реализованная с помощью рекурсии. 
Листинг 5.1. Вычисление факториалов с помощью рекурсии 
function factorial (n) { 
if (n < 0) { 
return; // Неправильное число, завершаем работу 
} else if (n <= 1) { 
return 1; 
} else { 
return n * factorial(n-1); 
// Использование в программе: 
factorialC); // Возвращает: 6 
factorialE); // Возвращает: 120 
Вычислить факториал можно и с помощью цикла, полностью заменяющего  
рекурсию, как показано в листинге 5.2. 
Листинг 5.2. Вычисление факториала без использования рекурсии 
function factorial (n) { 
if (n < 0) { 
return; // Неправильное число, завершаем работу 
} else { 
var result = 1; 
for (var i = 1; i <= n; i++) { 
result = result * i; 
return result; 
В листингах 5.1 и 5.2 представлены два различных способа решения одной задачи. 
Рекурсивный подход гласит: «Факториал числа 6 равен числу 6, умноженному на 
факториал числа 5. Факториал числа 5 равен числу 5, умноженному на факториал 
числа 4...» и т. д. Нерекурсивный подход предполагает выполнение цикла для чисел 
от 1 до и, где происходит перемножение этих чисел, в результате чего получается 
одно большое число. 
Использование рекурсивных функций считается элегантным подходом, поскольку 
оно обеспечивает простое решение сложных задач — циклический вызов одной 
и той же функции. Тем не менее повторяющиеся вызовы функции являются менее 
эффективными, чем итерации цикла. Нерекурсивный подход, применяемый для 
вычисления факториалов, во много раз эффективнее рекурсивного. Кроме того, 
нерекурсивный подход исключает достижение максимальной глубины рекурсии, 
равной по умолчанию 1000, которая, однако, может быть изменена аргументом 
компилятора default-script-limits. 
В гл. 18 вы узнаете, что рекурсия иногда используется для обработки содержимого 
XML-документов с иерархической структурой. 




BACK NEXT

Сайт является частным собранием материалов и представляет собой любительский информационно-образовательный ресурс. Вся информация получена из открытых источников. Администрация не претендует на авторство использованных материалов. Все права принадлежат их правообладателям