Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

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




Рекурсия

Тема: Программирование рекурсивных алгоритмов.

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

 

Задание на лабораторную работу

  1. Получить задание в соответствии с номером своего варианта.
  2. Составить схему алгоритма решения задачи.
  3. Написать код программы на языке Паскаль в среде Borland Pascal for Windows.
  4. Осуществить компиляцию, отладку и тестирование программы.
  5. Получить результат.
  6. Оформить отчет по лабораторной работе.

 

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

Задание 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 элемента, и так далее. Затем остается выполнить проверку последнего элемента, и добавить к результату единицу в том случае, если он окажется положительным.

 

  1. Схема алгоритма решения задачи:

 

 

 

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.

 

  1. Компиляция, отладка, тестирование и получение результата:

 

Поделиться:





Читайте также:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...