ПредишенСледващото

Тя се нарича рекурсивен метод, който нарича себе си. Това се нарича рекурсия, в права. Има непряка рекурсия, когато две или повече метод изисква един до друг. Ако този метод се нарича себе си, в купчина създава копие на неговите стойности на параметри, както при конвенционалния метод на разговор, след което управлението се предава на първия повторно изпълним метод на оператора. Когато припомняйки процесът се повтаря.

Ясно е, че за завършване на всеки метод рекурсивно изчисляване трябва да съдържа, прибиране на реколтата най-малко един клон на не-рекурсивен алгоритъм, слагайки край на отчета за връщане. В края на метода на съответната част от стека е освободен и контрол се предава на повикващия, чието изпълнение продължава etsya точка след рекурсивно повикване.

Класически пример за рекурсивна функция е факторен функция (това не означава, че трябва да се изчислява факториел така). За! За да се получи стойността на факториела на N, за да се умножава по п-torial фактор (п - 1). Известно е също така, че 0 = 1 + 1 = 1 !:

дълго факт (дълго п)

върне 1; // не-рекурсивен клон

връщане (п * факт (п - 1)); // рекурсивен клон

За същото може да бъде написана на кратко:

дълго факт (дълго п)

върне (п> 1). п * факт (п - 1). 1;

Рекурсивни методи най-често се използват за компактно изпълнение рекурсивно-на прекомерен алгоритми, както и за работа с информационни структури, описани повторно рекурсивно, например, двоично дърво (концепцията за двоично дърво е дадено в глава 13). можете да изпълни всеки рекурсивен метод без повторно цени, този програмист трябва да гарантира съхранението на всички съответни данни за себе си.

Предимствата включват компактност рекурсия рекорд за Insuffici камери - разходи на време и памет на повторни извикване на метод и да го премести в ЗИП-параметри, и най-важното е, че рискът от преливане на стека.

Методи променлива аргумент

Понякога е удобно да се създаде метод, който може да бъде прехвърлена на друг-lichestvo аргументи. C # предоставя тази възможност с Params ключови думи. Параметър белязан тази дума, време-заместване в списъка на параметрите, и показва последния набор от определения вид на неопределена дължина, например: обществени Int Изчисли (Int една от междинно съединение с PARAMS Int [] г.).

При този метод, можете да предадете на три или повече параметри. Във вътрешността на метода на параметрите от третата, по-долу елементи обичайните масив. номер

масив елементи, получени от неговите свойства дължина. Като пример разглежда метод за изчисляване на средните стойности на елементите на масив (листинг 7.1).

Обявата 7.1. Метод за променлив брой параметри

публично статично двойно Среден (PARAMS инт [] а)

Резултатът от програмата:

Недостатъчни аргументи в метода

В този алгоритъм отсъствие Средните аргументи в призива на метода е грешка. Това събитие се обработва чрез генериране на изключение. Ако не се справя тази грешка, резултатът от изчислението е равен на средния "Числото не» (NaN) като резултат от Wie-деление на нула в отчета за връщане на метода.

Масивът параметър може да бъде само един, и трябва да бъде поставен последен в списъка. Съответните аргументи трябва да са видове, за които кой може да бъде косвена смяна на типа на масив.

Свързани статии

Подкрепете проекта - споделете линка, благодаря!