Использование рекурсивных алгоритмов для решения экономических задач
Автор работы: Пользователь скрыл имя, 24 Марта 2011 в 22:32, курсовая работа
Описание работы
В настоящее время область практического применения рекурсии весьма широка. Она включает, в частности, сложные задачи численного анализа, алгоритмы трансляции, а также различные операции над списками, являющиеся необходимым аппаратом разработки современных автоматизированных систем управления. Поэтому аппарат рекурсии предусматривается практически во всех языках программирования, появляющихся после АЛГОЛа.
Содержание работы
Введение 2
1. Теория рекурсивных алгоритмов 3
1.1. Понятие рекурсии и её виды 3
1.2. Общие принципы программной реализации рекурсии. 9
2. Программная реализация рекурсии 17
2.1. Примеры решения задач с помощью рекурсии 17
2.2. Решение экономической задачи с использованием рекурсивного алгоритма 20
Заключение 22
Список использованных источников 23
Файлы: 1 файл
1.doc
— 364.00 Кб (Скачать файл)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. Нахождение наибольшего общего делителя
Рекурсия является в мощным инструментом для программистов. Но не следует забывать, что краткость записи рекурсивных функций не всегда означает высокую скорость их вычисления. И есть ряд задач, в которых рекурсия просто вредна (такова, например, задача вычисления кратчайшего пути в графе).
2.2. Решение экономической задачи с использованием рекурсивного алгоритма
Одной
и наиболее востребованной операцией
в экономической сфере является
расчет процентов по вкладу. Пример
задачи: вкладчик положил в банк сумму
в 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. Задача о сумме вклада
Проверка правильности решения задачи на Excel:
Рис. 2.5. Расчет задачи на Excel
Результаты
обоих решений сходятся, следовательно
ошибки в расчетах не возникло, программа
работает правильно.
Заключение
На основании проведенного исследования можно сделать несколько выводов:
- во – первых, рекурсивные алгоритмы есть универсальное средство решения разнообразных алгоритмических проблем. Любая разрешимая задача такого рода имеет рекурсивное решение, которое при этом отличается изяществом и простотой для восприятия человеком;
- во – вторых, рекурсивные алгоритмы часто имеют более низкую асимптотическую сложность, чем эквивалентные им итерационные. То есть теоретически они быстрее;
- в – третьих, развитие современных программных средств сделало практическое использование рекурсии достаточно несложным делом, а новые концепции и технологии программирования преодолели проблему низкой эффективности рекурсивных программ, созданную необходимостью вызова большого количества подпроцедур.
Рекурсия отражает черту абстрактного мышления, проявляющуюся в самых различных приложениях (в математике, синтаксическом анализе и трансляции, древовидной сортировке и обработке данных с динамической структурой, шахматных задачах и т.д.). Именно в задачах такого рода лучше применять рекурсивные алгоритмы, так как они, избавляют от необходимости последовательного описания процессов, к тому же, практически все действующие языки программирования поддерживают рекурсию.
Но
следует сказать, что всегда полезно
подумать о замене рекурсии на циклические
алгоритмы. Однако в некоторых случаях
решение задачи без рекурсии может быть
чрезвычайно сложным и прирост производительности
не будет стоить потраченных усилий.
Список использованных источников
- C/C++. Программирование на языке высокого уровня / Т. А. Павловская. – СПб.: Питер, 2003. – 461 с: ил.
- Баррон Д. Рекурсивные методы в программировании (Мир, 1974, 80 стр.).
- Головешкин В.А., Ульянов М. В. Теория рекурсии для программистов. М.: ФИЗМАТЛИТ, 2006. 296 с.
- Катленд Н. Вычислимость. Введение в теорию рекурсивных функций. – М., 1983.
- Мальцев А.И. Алгоритмы и рекурсивные функции. – М., 1965.
- Харви Дейтел и Пол Дейтел Как программировать на C++. Бином, 2006.
- Громов Ю.Ю., Татаренко С.И. Языки СИ и С++ для решения инженерных и экономических задач. Тамбов: Издательство ТГТУ, 2001.
- www.intuit.ru
- www.cyberforum.ru
- www.tehnari.ru