Цель работы: Получить навыки в составлении алгоритма и отладке программы решения задач с использованием подпрограмм.
Теоретические положения
В программировании рекурсия— вызов функции /процедуры из неё же самой, непосредственно (прямая рекурсия) или через другие функции (косвенная рекурсия).
Глубиной рекурсии называется количество вложенных вызовов функции или процедуры. Число рекурсивных вызовов в каждый конкретный момент времени называется текущим уровнем рекурсии.
Компилятор формирует сегмент кода, сегмент данных и сегмент стека.
Динамическая память |
Сегмент стека (для хранения локальных данных) |
Сегмент данных (для хранения глобальных данных и локальных констант) |
Сегмент кода ( код программы в машинных кодах) |
Стек (англ. stack — стопка) — структура данных, в которой доступ к элементам организован по принципу LIFO (англ. last in — first out, «последним пришёл — первым вышел»)
Элементы статистики Таблицы, полигон, гистограмма частот
Для отслеживания точек возврата из подпрограмм используется стек вызовов.
Реализация рекурсивных вызовов функций опирается на механизм стека вызовов: адрес возврата и локальные переменные функции записываются в стек, благодаря чему каждый следующий рекурсивный вызов этой функции пользуется своим набором локальных переменных и за счёт этого работает корректно. При повторном вызове этот процесс повторяется. Для завершения вычисления каждая рекурсивная программа должна содержать хотя бы одну нерекурсивную ветвь алгоритма, заканчивающуюся возвратом в вызывающую программу.
Любая рекурсивная процедура Rec включает в себя некоторое множество операторов S и один или несколько операторов рекурсивного вызова Р.
Структура рекурсивной процедуры может принимать три формы:
1)
Procedure Rec; Begin S; If условие then Rec; End; |
Форма с выполнением действий до рекурсивного вызова ( свыполнением действий на рекурсивном спуске)
2) Форма с выполнением действий после рекурсивного вызова (с выполнением действий на рекурсивном возврате)
Procedure Rec; Begin If условие then Rec; S; End; |
3) Форма с выполнением действий до и после рекурсивного вызова ( свыполнением действий как на рекурсивном спуске, так и на рекурсивном возврате)
Procedure Rec; Begin S1; If условие then Rec; S2; End; |
Procedure Rec; Begin If условие then Begin S1; Rec; S2; End; End; |
Задача 1:Используя рекурсивную процедуру, вычислить сумму
procedureSumRec( n:integer; var S: real);
else begin SumRec( n-1, S );
Источник: studopedia.net
Язык C++ с нуля | #28 Табулирование функции в c++
Составьте и протестируйте программу вычислить значение функции для 2 х 2 изменяющегося с шагом
Составьте и протестируйте программу:
Вычислить значение функции для -2∏≤ х ≤2∏, изменяющегося с шагом
51
Комментарии (0)
По дате По дате Популярные
Нет комментарий
Войдите, чтобы комментировать
Ответов нет
Знаешь ответ? Добавь его сюда и заработай денег! Ответы проходят модерацию. Минимум 100 символов.
Чтобы добавить ответ — нужно войти или зарегистрироваться
Похожие вопросы
(Ольга ученик ) (Информатика)
1
(Ольга ученик ) (Информатика)
(Ольга ученик ) (Информатика)
(Ольга ученик ) (Информатика)
1
(Андрей ученик ) (Информатика)
2
Популярное
(Женя Бурцев ученик ) (Математика)
3
(Анфим Гущин ученик ) (История)
2
(Рина Русакова ученик ) (Алгебра)
3
(Прокопий Герасимов ученик ) (Литература)
3
(Варвара Кузнецова ученик ) (Литература)
(Венедикт Федотов ученик ) (Математика)
1
(Дебора Русакова ученик ) (Физика)
2
Источник: teachs.ru
Составьте и протестируйте программу вычислить значение функции для 2 х 2 изменяющегося с шагом
: 140
Для каждого x, изменяющегося от a до b с шагом h, найти.
Всем доброго. Проверьте пожалуйста задачку. Математику я не знаю. Делал по аналогии чужих примеров.
Для каждого x, изменяющегося от a до b с шагом h, найти значения функции Y(x), суммы S(x) и |Y(x)–S(x)| и вывести в виде таблицы. Значения a, b, h и n вводятся с клавиатуры.
Работу программы проверить для a = 0,1; b = 1,0; h = 0,1; значение параметра n выбрать в зависимости от задания.
#include #include #include int _tmain(int argc, _TCHAR* argv[]) < SetConsoleOutputCP(1251); SetConsoleCP(1251); const double pi = 3.14; double a, b, h, n, x; double Yx, Sx, k; cout > a; cout > b; cout > h; cout > n; for ( x = a; x //cout cout
Использовал C++ Builder 10. Нахождение суммы S(x) я думаю что не правильно.
Изображения
0000.png (3.5 Кб, 49 просмотров) |
Источник: www.programmersforum.ru