000131. Как делать функции c#- Часть 3
Как делать функции c#? Часть 3||wmysterio|wmysterio|[email protected]|||Приветствую Вас, дорогие пользователи сайта. Это третья часть по разработке функций на 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|01804118
png
141`71||kak_delat_funkcii_c_chast_3|1392798688Last modified 1yr ago