Главная » Статьи » Програмування » C [ Добавить статью ]

RUS Уроки по программированию на языке С (Рекурсии или итерации?)

Рекурсии или итерации?

Изучив предыдущий раздел урока – вы наверняка задались вопросом: а зачем нужна рекурсия? Ведь, реализовать вычисление факториала можно и с помощью итераций и это совсем не сложно:

#include <iostream>
using namespace std;

long int Fact2(long int N)
{
 long int F = 1;
 //цикл осуществляет подсчет факториала
 for (long int i=2; i<=N; i++)
 F *= i;
 return F;
}



void main()
{
 long number=5;
 long result=Fact2(number);
 cout<<"Result "<<number<<"! is - "<<result<<"\n";
}

Такой алгоритм, наверное, будет более естественным для программистов. На самом деле, это не совсем так. С точки зрения теории, любой алгоритм, который можно реализовать рекурсивно, совершенно спокойно реализуется итеративно. Мы только что в этом убедились.

Однако это не совсем так. Рекурсия производит вычисления гораздо медленнее, чем итерация. Кроме того, рекурсия потребляет намного больше оперативной памяти в момент своей работы.

Значит ли это, что рекурсия бесполезна? Ни в коем случае!!! Существует ряд задач, для которых рекурсивное решение тонко и красиво, а итеративное – сложно, громоздко и неестественно. Ваша задача, в данном случае – научиться, не только оперировать рекурсией и итерацией, но и интуитивно выбирать, какой из подходов применять в конкретном случае. От себя можем сказать, что лучшее применение рекурсии – это решение задач, для которых свойственна следующая черта: решение задачи сводится к решению таких же задач, но меньшей размерности и, следовательно, гораздо легче разрешаемых.

Удачи Вам на данном поприще!!! Как говорится: «Что бы понять рекурсию, надо просто понять рекурсию». 


Категория: C | Добавил: DEN-SHP (05.11.2012)
Просмотров: 801 | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]