Программирование с использованием рекурсии

Организация вычислительного процесса, при котором подпрограмма в ходе выполнения составляющих ее операторов обращается сама к себе. Способы программирования алгоритмов с использованием рекурсии. Преимущества и недостатки использования рекурсии.

Рубрика Программирование, компьютеры и кибернетика
Вид лабораторная работа
Язык русский
Дата добавления 28.05.2012
Размер файла 27,8 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Лабораторная работа

Программирование с использованием рекурсии

Задание к лабораторной работе

Цель работы: освоить способы программирования алгоритмов с использованием рекурсии.

Общие сведения рекурсия - способ организации вычислительного процесса, при котором подпрограмма в ходе выполнения составляющих ее операторов обращается сама к себе.

Перед выполнением работы необходимо изучить способы описания и использования рекурсивных процедур и функций.

Пример. Написать программу, содержащую подпрограммы, вычисляющий

с использованием и без использования рекурсии.

Решение

Program SUMIR;

Var n: Integer; SUM:Real;

{------- Рекурсивная процедура-функция -------------}

Function S_REC(n:word):Real;

Begin

if n=1 then S_REC:=4

else S_REC:=S_REC(n-1)+(n+1)*(n+1)/n

End;

{------- Процедура-функция без рекурсии ------------}

Function S(n:word):Real;

Var i: byte; Sum: Real;

Begin

Sum:=4;

For i:=2 to n do Sum:=Sum+(i+1)*(i+1)/i;

S:=Sum

End;

{----------- Рекурсивная процедура ----------------}

Procedure REC(n:word; Var S:Real);

Begin

if n=1 then S:=4

else Begin

REC(n-1,S);

S:=S+(n+1)*(n+1)/n

End

End;

{------------ Процедура без рекурсии ------------}

Procedure SS(n:word; Var S:Real);

Var i: byte;

Begin

S:=4;

For i:=2 to n do S:=S+(i+1)*(i+1)/i;

End;

{----------- Основная программа ----------------}

Begin

Write('n='); Readln(n);

Writeln('Сумма равна');

Writeln('1. Функция с рекурсией: ',S_REC(n):0:5);

Writeln('2. Функция без рекурсии: ',S(n):0:5);

REC(n,SUM);

Writeln('3. Процедура c рекурсией: ',SUM:0:5);

SS(n,SUM);

Writeln('4. Процедура без рекурсии: ',SUM:0:5);

End.

рекурсия алгоритм вычислительный

Контрольные вопросы

1. Что такое «рекурсия»?

2. В чем преимущества и недостатки использования рекурсии?

Задачи

Решить поставленные задачи различными способами: с применением рекурсии и без нее.

1. Для заданного целого десятичного числа N получить его представление в p-ичной системе счисления (p<10).

2. В упорядоченном массиве целых чисел ai, i=1...n найти номер элемента c используя метод двоичного поиска. Предполагается, что элемент c находится в массиве.

3. Найти наибольший общий делитель чисел M и N. Используйте теорему Эйлера: Если M делится на N, то НОД (N, M)=N, иначе НОД (N, M)=

=НОД (M mod N, N).

4. Вычислить число Фибоначчи Fb(n). Числа Фибоначчи определяются следующим образом: Fb(0)=1; Fb(1)=1; Fb(n)=Fb(n-1)+Fb(n-2).

5. Найти значение функции Аккермана A(m, n), которая определяется для всех неотрицательных целых аргументов m и n следующим образом:

A(o, n)=n+1;

A(m, o)=A(m-1, 1); (m>o);

A(m, n)=A(m-1, A(m, n-1)); (m>o; n>o).

6. Вычислить m-ю производную полинома степени n

7. Вычислить значение , используя рекуррентную формулу

в качестве начального приближения использовать значение x0=0.5(1+a).

8. Найти максимальный элемент в массиве a1...an, используя очевидное соотношение max (a1...an)=max (max (a1...an-1), an).

9. Найти максимальный элемент в массиве a1...an, используя соотношение (метод деления пополам) max (a1...an)=max (max (a1...an/2), max (an/2+1, an)).

10. Вычислить .

11. Вычислить

12. Вычислить произведение n2 (n-четное) сомножителей

13. Вычислить по следующему алгоритму: , если N четное; , если N нечетное.

14. Вычислить n!.

15. Выполнить сортировку массива целых чисел ai, i=1, n с помощью разделения (QuickSort). См. Вирт Н., Алгоритмы и структура данных.

Размещено на Allbest.ru


Подобные документы

  • Использование рекурсии в предметных областях. Рекурсивные процедуры и функции в программировании. Создание алгоритмов для рисования графических изображений с использованием рекурсии в среде программирования Pascal ABC. Примеры рекурсии в графике.

    творческая работа [6,7 M], добавлен 01.02.2014

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

    презентация [486,1 K], добавлен 22.10.2013

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

    курсовая работа [432,2 K], добавлен 16.01.2013

  • Обратная трассировка лучей: ограничения при реализации, достоинства и недостатки. Математические и физические предпосылки алгоритма, блок-схема. Выбор языка программирования. Зависимость времени генерации от глубины рекурсии, количества источников.

    курсовая работа [503,0 K], добавлен 27.05.2013

  • Краткая характеристика интегрированной среды Turbo Pascal. Принципы программирования разветвляющихся алгоритмов, циклических структур, задач обработки символьных данных, множеств. Правила записи данных в текстовый файл. Понятие явной и косвенной рекурсии.

    учебное пособие [1,5 M], добавлен 10.12.2010

  • Обработка сложных структур данных как одна из наиболее распространенных возможностей применения языка программирования С++. Преимущества использования подпрограмм. Передача параметров, одномерных и двумерных массивов, функции и их возврат в функцию.

    курсовая работа [1,1 M], добавлен 24.11.2013

  • Классификация и стек рекурсивных функций. Методика распознавания формулы, записанной в строке. Реализация салфетки Серпинского и задачи о Ханойских башнях. Алгоритм быстрой сортировки. Создание функции, сортирующей массив с использованием рекурсии.

    лабораторная работа [160,8 K], добавлен 06.07.2009

  • Решение задач прикладного программирования. Оформление разработанных алгоритмов в виде графических схем. Написание программ с использованием подпрограмм, их отладка. Блок-схемы и листинг программ. Наборы тестов для отладки разработанных программ.

    курсовая работа [575,8 K], добавлен 06.12.2013

  • Сущность и особенности выполнения метода динамического программирования. Решение математической задачи, принцип оптимальности по затратам, ручной счёт и листинг программы. Применение метода ветвей и границ, его основные преимущества и недостатки.

    курсовая работа [38,9 K], добавлен 15.11.2009

  • Изучение элементов языка С++, программирование разветвлений и циклов с использованием операторов условного и перехода. Обработка одномерных массивов. Поиск максимального элемента массива с заданной размерностью. Листинги программы и результатов.

    курсовая работа [647,7 K], добавлен 05.02.2013

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.