ГЛАВНАЯ     АРХИВ     НАПИСАТЬ АДМИНУ     ПОДПИСАТЬСЯ НА RSS     ВОЙТИ      

Поиск

Категории

Облако тегов

acer ado.net amd asp.net c sharp c# cms css exceptions google html ipad iphone it бизнес javascript jquery linq microsoft mysql net nokia nokia lumia samsung seo silverlight sql surface tsql windows 8 windows blue windows phone windows rt xna безопасность библиотека вопросы на собеседовании интересные проекты интернет интернет магазин исключения книга книги компьютерная безопасность компьютерные игры контролы курсы по программированию логированние исключений мобильные приложения монетизация сайтов наушники новости новости it новости microsoft новости интернет новости технологий ноутбук ноутбуки обработка исключений оптимизация острова периферия планшет планшеты поддержка сайтов поисковое продвижение программы продвижение продвижение сайта продвижение сайтов рабство разработка игр разработка сайтов раскрутка сайта рекламные технологии смартфон смартфоны собеседование создание сайтов средства разработки туризм фриланс хостинг яндекс
  << Предыдущий пост       Следующий пост >>  
От: ironMan
12. августа 2011 03:15

Иногда возникают ситуации, когда в теле функции необходимо вызвать экземпляр этой же функции. Такое явление называется рекурсией. Использование рекурсии позволит вам в некоторых случаях избежать сложных циклов и проверок. Типичным примером использования рекурсии является функция нахождения факториала числа.



using System;

class Degrees
{
public static int Factorial(int x)
{
return (x==1) ? 1: x * Factorial(x-1);
}

public static void Main])
{
for (int i=1; i<10; i++)
{
Console.WriteLine( Factorial(i) );
}
}
}

Функция Factorial явяется рекурсивной. На первый взгляд она может показаться вам сложной. Однако она совсем проста (всего одна строка). Если функция приняла значение, отличное от единицы, то вызывает саму себя и передает значение, на единицу меньшее. Так происходит до тех пор, пока переданое значение не станет равным единице. После того какфункция примет значение 1, начнется выход из всех экземпляров вызванных функций Factorial и возврат произведения параметра функции и возвращенного значения. Допустим, мы ищем факториал числа 5. Тогда передача параметров экземплярам функции Factorial идет в такой последовательности: 5, 4, 3, 2, 1. А последовательность возвращаемых значений будет следующей: 1, 2, 6, 24, 120. Результатом работы функции станет число 120. Однако рекурсия имеет и недостатки. При создании каждого экземп-
ляра функции выделяются дополнительные блоки памяти, что нежелательно при работе программы.

( отрывок из книги В. В. Лабор "Си Шарп: Создание приложений для Windows" )

 

Похожие записи


Многопоточный HTTP сервер на C#
Оригинал статьи здесь: Многопоточный сервер на C# за 15 минут Автор (на хабре): ertaquo C# довольно простой и гибкий язык. Вместе с .NET поставляется довольно много уже готовых классов, что делает его еще проще. Настолько, что вполне можно написать простой многопоточный HTTP-сервер для отдачи статического содержимого всего за 15 минут. Можно было бы использовать уже...

Нейгел, Ивьен, Глинн, Уотсон, Скиннер - C# 2008 и платформа .NET 3.5
Название: C# 2008 и платформа .NET 3.5 для профессионалов Авторы: Нейгел, Ивьен, Глинн, Уотсон, Скиннер Издательство: Вильямс ISBN: 978-5-8459-1458-3 Год: 2008 Страниц: 1392 От издателя: Эта книга является совершенным руководством по языку C# 2008 и его среде. Она обновлена с учетом вышедших версий .NET 3.5 и Visual Studio 2008. Начиная с обзора и архитектуры ...

Виртуальные свойства в C#
Свойства, как и методы, могут быть перегружены в производных классах. Для свойств также могут задаваться модификаторы virtual, override или abstract. Подробно о наследовании говорилось в главе «Методы», сейчас я лишь хочу еще раз привести подробный пример использования механизма виртуализации с применением свойств: [code:c#] using System; enum COLORS { RE...

Добавить комментарий




biuquote
  • Комментарий
  • Предпросмотр
Loading


  Сохранить комментарий