000131. Как делать функции c#- Часть 3
Last updated
Last updated
Как делать функции c#? Часть 3||wmysterio|wmysterio|wmysterio@yandex.ru|||Приветствую Вас, дорогие пользователи сайта. Это третья часть по разработке функций на 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 => 77 = 49 MaxValue > 49 => 4949 = 2401 MaxValue > 2401 => 2401 => return; |
Достаточно сложно объяснить словами сам процесс рекурсии - это нужно понять на практике. Саму рекурсию используют не так часто, но всё же применение всегда находится. Недостатком повторного вызова - нужно слишком вдумчиво продумывать алгоритм выполнения, так как не рекомендуется выполнять длительные и сложные действия в самой функции и не создавать всякого рода переменные в теле функции, так как это влияет на быстродействие программы и на производительности в целом. К тому-же нужно максимально обезопасить программу от зацикливания.
Я привёл один из лёгких способов функции это типа. Надеюсь вам было понятно и полезно.|724|1|0|01804118png
141`71||kak_delat_funkcii_c_chast_3|1392798688