Использование рекурсивных алгоритмов для решения экономических задач

Автор работы: Пользователь скрыл имя, 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

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

Заключение

    На  основании проведенного исследования можно сделать несколько выводов:

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

    Рекурсия  отражает черту абстрактного мышления, проявляющуюся в самых различных приложениях (в математике, синтаксическом анализе и трансляции, древовидной сортировке и обработке данных с динамической структурой, шахматных задачах и т.д.). Именно в задачах такого рода лучше применять рекурсивные алгоритмы, так как они, избавляют от необходимости последовательного описания процессов, к тому же, практически все действующие языки программирования поддерживают рекурсию.

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

Список использованных источников

  1. C/C++. Программирование  на языке высокого уровня / Т. А. Павловская. – СПб.: Питер, 2003. – 461 с: ил.
  2. Баррон Д. Рекурсивные методы в программировании (Мир, 1974, 80 стр.).
  3. Головешкин В.А., Ульянов М. В. Теория рекурсии для программистов. М.: ФИЗМАТЛИТ, 2006.  296 с.
  4. Катленд Н. Вычислимость. Введение в теорию рекурсивных функций. – М., 1983.
  5. Мальцев А.И. Алгоритмы и рекурсивные функции. – М., 1965.
  6. Харви Дейтел и Пол Дейтел Как программировать на C++.  Бином, 2006.
  7. Громов Ю.Ю., Татаренко С.И. Языки СИ и С++ для решения инженерных и экономических задач. Тамбов: Издательство ТГТУ, 2001.
  8. www.intuit.ru
  9. www.cyberforum.ru
  10. www.tehnari.ru

Информация о работе Использование рекурсивных алгоритмов для решения экономических задач