Рейтинг - 5.0 (1)

Приветствую Вас, дорогие пользователи сайта. Это третья часть по разработке функций на c#. И её я решил посвятить рекурсии. Что это вообще такое? В  программировании это понятие называется вызов функции самой из себя в качестве вспомогательной функции. Классическими методами использования рекурсивных методов является вычисление факториала чисел. Я не буду выносить мозг Вам и себе с этими факториалами и приведу более лёгкий метод. Допустим мы подаём в функцию некое число. Нам нужно вычислить квадрат этого числа и вернуть этот результат. Причём нужно это делать таким образом, что бы квадрат нашего числа должен возносится в степень до тех пор, пока входящее число не больше указанного числа. Следовательно наша функция будет принимать 2 параметра:
public static int Qad(int FirstValue, int MaxValue) {
// .....
}
Первым делом нужно написать условие, чтобы число FirstValue было больше за второй параметр , так же не был равен нулю или единице. Если одно из этих условий выполнятся, то возвращаем параметр FirstValue:
public static int Qad(int FirstValue, int MaxValue)  {
    if (FirstValue > MaxValue || FirstValue == 0 || FirstValue == 1) {
        return FirstValue;
    }
}
Эти условия мы задали, что бы сделать как бы границу вычисления. Так как рекурсия - это цикличное действие, то условия выхода должны быть. Теперь в дело мы и пустим рекурсию. Так как мы поставили цель задания вычислять квадрат числа, то нужно умножить число на FirstValue и подставить его у вновь вызванную функцию Qad. Теперь наш код будет иметь вид:
public static int Qad(int FirstValue, int MaxValue)  {
    if (FirstValue > MaxValue || FirstValue == 0 || FirstValue == 1) {
        return FirstValue;
    } else {
        FirstValue *= FirstValue;
        return Qad(FirstValue, MaxValue);
    }
}
Теперь напишем код основной программы и подставим входные данные:
using System;

namespace Consol {
    class Program {
        static void Main() {
            int start = Qad(7, 200);
            Console.WriteLine("{0}", start);
            Console.ReadKey();
        }

        public static int Qad(int FirstValue, int MaxValue)  {
            if (FirstValue > MaxValue || FirstValue == 0 || FirstValue == 1) {
                return FirstValue;
            } else {
                FirstValue *= FirstValue;
                return Qad(FirstValue, MaxValue);
            }
        }
    }
}
Результат выполнения программы:

Как же мы получили такой результат? Смотрим арифметические операции над FirstValue:
Итерация функции
FirstValue
0
1
2
MaxValue > 7 => 7*7 = 49
MaxValue > 49 => 49*49 = 2401
MaxValue > 2401 => 2401 => return;
Достаточно сложно объяснить словами сам процесс рекурсии - это нужно понять на практике. Саму рекурсию используют не так часто, но всё же применение всегда находится. Недостатком повторного вызова - нужно слишком вдумчиво продумывать алгоритм выполнения, так как не рекомендуется выполнять длительные и сложные действия в самой функции и не создавать всякого рода переменные в теле функции, так как это влияет на быстродействие программы и на производительности в целом. К тому-же нужно максимально обезопасить программу от зацикливания.

Я привёл один из лёгких способов функции это типа. Надеюсь вам было понятно и полезно.

Теги: Как делать функции c#? Часть 3
Вход на сайт

Поиск
Категории раздела
Мини-чат
Пожалуйста, все вопросы по скриптингу задавать на форуме!
Наш опрос
Кто из главных героев GTA 5 круче?
Всего ответов: 10
Активность на сайте
Пожертвования
Кошельки WebMoney:
U859420971000
R407741810602
Z331072372430
E314272616890
Друзья сайта
Полезные ресурсы
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0

Сегодня нас посетили:
Рекомендую
Реклама