Лабораторная работа № 9
Рекурсия Тема: Программирование рекурсивных алгоритмов. Цель работы: Освоить методику программирования рекурсивных алгоритмов.
Задание на лабораторную работу
Пример оформления работы Задание 1. Написать рекурсивную функцию, вычисляющую факториал заданного целого положительного числа n.
1. Для вычисления n! можно воспользоваться следующими соотношениями: 1! = 1 2! = 1•2 = 2•1! 3! = 1•2•3 = 3•2! ... n! = n•(n-1)! 3. Схема алгоритма решения задачи:
3. Код программы:
Program Variant_0; Uses WinCrt; Var n: Word; fact: LongInt; Function Factorial(k:Word):LongInt; Begin If (k=1) Or (k=0) Then Factorial:=1 {терминальная ветвь} Else Factorial:=k*Factorial(k-1); {рекурсивная ветвь} End; {Factorial} Begin {головная программа} WriteLn('Лабораторная работа №9_1'); WriteLn('Вариант №0'); WriteLn('ИС-11-1'); WriteLn('Пупкин Василий'); WriteLn; Write('n='); ReadLn(n); fact:=Factorial(n); WriteLn('factorial=', fact); End. 4. Компиляция, отладка, тестирование и получение результата:
Задание 2. Написать рекурсивную функцию, определяющую количество положительных элементов в заданном векторе vectorn. 1. Представим решение этой сложной задачи через решение более простой задачи посредством рекурсивного обращения. Чтобы подсчитать количество нужных нам элементов во всем векторе, содержащем n элементов, необходимо сначала сделать это для вектора, содержащего n–1 элемент, n-2 элемента, и так далее. Затем остается выполнить проверку последнего элемента, и добавить к результату единицу в том случае, если он окажется положительным.
3. Код программы:
Program Variant_0; Uses WinCrt; Const n = 10; {задание размера вектора именованной константой} Type TVect=Array [1..n] Of Integer;{описание нового типа} Var i, count: Word; v_min, v_max: Integer; vector: TVect; Function Count_pol(k: Word; Var AA: TVect): Word; Var m: Word; Begin If (k=0) Then m:=0 {если в векторе уже нет элементов} Else Begin m:=Count_pol(k-1, AA); If (AA[k]>0) Then m:=m+1; End; Count_pol:=m; End; {функции Count_pol} Begin {головная программа} Randomize; {запуск генератора случайных чисел} WriteLn('Лабораторная работа №9_2'); WriteLn('Вариант №0'); WriteLn('ИС-11-1'); WriteLn('Пупкин Василий'); WriteLn; WriteLn('Задайте диапазон случайных чисел'); Write('v_min='); ReadLn(v_min); Write('v_max='); ReadLn(v_max); For i:=1 To n Do {заполнение вектора случайными числами} vector[i]:=Random(v_max-v_min + 1) + v_min; WriteLn; WriteLn('Исходный вектор:'); For i:=1 To n Do {вывод на экран исходного вектора} Write(vector[i]:5); WriteLn; count:=Count_pol(n, vector); WriteLn; WriteLn('count=', count); End.
Читайте также: А. Лабораторная установка Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|