русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Индивидуальные задания


Дата добавления: 2015-01-08; просмотров: 1236; Нарушение авторских прав


Лабораторная работа №9 Программирование с использованием рекурсии

Понятие рекурсии

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

В рекурсивном алгоритме важно предусмотреть способ его остановки, т.е. ввести условие, при котором рекурсивное обращение к функции прекращается.

Пример выполнения работы

Вычислить среднее значение элементов одномерного массива.

#include <iostream.h>

 

double Mean_rec(double *A, int n); //прототип рекурсивной функции

double Mean_cyc(double *A, int n); //прототип нерекурсивной функции

 

void main()

{

double A[10];

int n;

cout << "Enter a size of vector: ";

cin >> n;

cout << "Enter elements of vector:";

for (int i=0; i < n; i++)

cin >> A[i];

 

cout <<"The mean value by the recursion:";

 

cout << Mean_rec(A, n) << endl;

 

cout <<"The mean value by the cycle:";

 

cout << Mean_cyc(A, n) << endl;

 

return;

}

 

double Mean_rec(double *A, int n)

{

if (n > 0)

return A[n - 1] / n + Mean_rec(A, n - 1) * (n - 1) / n;

else

return A[n] / 2;

}

 

double Mean_cyc(double *A, int n)

{

double mean = 0;

for (int j=0; j < n; j++)

mean = (mean * j + A[j]) / (j + 1);

 

return mean;

}

Индивидуальные задания

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

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



1. Вычислить значение выражения при заданном положительном n:

. Последнее значение должно быть равно 0 или 1.

2. Вычислить произведение элементов трехмерного массива.

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

4. В упорядоченном по убыванию массиве положительных чисел ai, i = 1 ... n найти номер элемента c методом бинарного поиска, используя очевидное соотношение: если , тогда , иначе . Если номер элемента c не найден, то все элементы увеличить в 2 раза.

5. Найти наибольший общий делитель (НОД) чисел M, N и K,используя метод Эйлера: если все K, M, N делятся на Z = min(K, M, N), то НОД (K, M, N) = Z, иначе НОД(K, M, N) = НОД(A % Z, B %Z, Z), где A и B – не равные Z числа.

6. Вычислить значение , используя формулу вычисления квадратного корня , в качестве начального приближения для данной формулы использовать значение .

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

8. Вычислить для четных чисел и для нечетных чисел.

9. Вычислить значение суммы

10. Проверить, является ли заданная строка палиндромом (как обычным палиндромом, так и читаемым в прямом направлении).

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

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

13. Вычислить значение выражения , используя для подсчета целых чисел сумму чисел 2 в положительных степенях, а для дробей - в отрицательных степенях. Число разлаживается в ряд .

14. Вычислить значение , используя формулу вычисления кубического корня , в качестве начального приближения для данной формулы использовать значение .

15. Реализовать вычисление натурального числа, которое может стать палиндромом с помощью итеративного процесса «отразить и сложить». Например: 53+35=88. Для разных чисел требуется разное количество итерацией. Алгоритм будет корректно работать до числа 195 включительно.

 



<== предыдущая лекция | следующая лекция ==>
Глава 4 Основы создания сценариев | Функции для работы с файлами


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 3.667 сек.