Автор работы: Пользователь скрыл имя, 24 Марта 2011 в 22:32, курсовая работа
В настоящее время область практического применения рекурсии весьма широка. Она включает, в частности, сложные задачи численного анализа, алгоритмы трансляции, а также различные операции над списками, являющиеся необходимым аппаратом разработки современных автоматизированных систем управления. Поэтому аппарат рекурсии предусматривается практически во всех языках программирования, появляющихся после АЛГОЛа.
Введение 2
1. Теория рекурсивных алгоритмов 3
1.1. Понятие рекурсии и её виды 3
1.2. Общие принципы программной реализации рекурсии. 9
2. Программная реализация рекурсии 17
2.1. Примеры решения задач с помощью рекурсии 17
2.2. Решение экономической задачи с использованием рекурсивного алгоритма 20
Заключение 22
Список использованных источников 23
std::cout << "Vvedite chislo:\n";
std::cin >> n;
std::cout << "Factorial " << n << " raven " << factorial(n) << "\n";
return 0;
}
Результат работы программы представлен на рисунке 2.2.
Рис. 2.2.
Факториал числа
Задача
3. Нахождение наибольшего
общего делителя
#include <iostream>
int nod(int m, int n)
{
if (n == 0) return m;
else
return nod(n, m % n);
}
int main() {
int n = 0;
int m = 0;
std::cout << "Vvedite pervoe chislo:\n";
std::cin >> n;
std::cout << "Vvedite vtoroe chislo:\n";
std::cin >> m;
std::cout << "NOD raven "<< nod(m, n) << "\n";
return 0;
}
Результат работы программы представлен на рисунке 2.3.
Рис. 2.3. Нахождение наибольшего общего делителя
Рекурсия является в мощным инструментом для программистов. Но не следует забывать, что краткость записи рекурсивных функций не всегда означает высокую скорость их вычисления. И есть ряд задач, в которых рекурсия просто вредна (такова, например, задача вычисления кратчайшего пути в графе).
Одной
и наиболее востребованной операцией
в экономической сфере является
расчет процентов по вкладу. Пример
задачи: вкладчик положил в банк сумму
в sum денежных единиц под pr процентов за
один период времени (год, месяц, неделя
и т.д.). Составить программу, возвращающую
величину вклада по истечении m периодов
времени (m = 24).
#include <iostream>
#include <windows.h>
using namespace std;
double rec_fun(double sum, double pr, int m, int i)
{
if(m==i)
return sum;
sum+=(sum*(pr/100));
return rec_fun(sum, pr, m, i+1);
}
int main ()
{
int m;
double sum, pr;
cout<<"Vvedite nachalnuyu summu vklada: "<< endl;
cin>>sum;
cout<<"Vvedite ejemesyachniy procent po vkladu: "<< endl;
cin>>pr;
cout<<"Vvedite colichestvo mesyacev:"<< endl;
cin>>m;
cout<<"Za "<<m<<" mesyacev summa vklada sostavit: "<<rec_fun(sum, pr, m, 0)<<endl;
return 0;
}
Результат работы программы представлен на рисунке 2.4.
Рис. 2.4. Задача о сумме вклада
Рис. 2.5. Расчет задачи на Excel
Результаты
обоих решений сходятся, следовательно
ошибки в расчетах не возникло, программа
работает правильно.
На основании проведенного исследования можно сделать несколько выводов:
Рекурсия отражает черту абстрактного мышления, проявляющуюся в самых различных приложениях (в математике, синтаксическом анализе и трансляции, древовидной сортировке и обработке данных с динамической структурой, шахматных задачах и т.д.). Именно в задачах такого рода лучше применять рекурсивные алгоритмы, так как они, избавляют от необходимости последовательного описания процессов, к тому же, практически все действующие языки программирования поддерживают рекурсию.
Но
следует сказать, что всегда полезно
подумать о замене рекурсии на циклические
алгоритмы. Однако в некоторых случаях
решение задачи без рекурсии может быть
чрезвычайно сложным и прирост производительности
не будет стоить потраченных усилий.
Информация о работе Использование рекурсивных алгоритмов для решения экономических задач