Планирование уроков на учебный год (по учебнику Н.Д. Угриновича, профильный уровень)



Урок 108
§4.10. Итерация и рекурсия




Содержание урока

Рекурсивная функция

Проект «Факториал (итерация)»

Проект «Факториал (рекурсия)»

Контрольные вопросы. Компьютерный практикум


Проект «Факториал (рекурсия)»


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

Будем вводить число в текстовое поле и выводить шаги вычисления факториала этого числа в список.

Создание графического интерфейса проекта на языках Visual Basic .NET, Visual С#, Visual J# и Turbo Delphi

1. Разместить на форме (рис. 4.22):

• текстовое поле Edit1 для ввода числа;
• список ListBox1 для вывода шагов вычисления факториала в качестве элементов списка;
• надписи для вывода поясняющих текстов.

Формулу для вычисления факториала можно записать следующим образом:

N! = N х (N-1) х (N-2) х...х 2 х 1 = N х (N-1)!

Следовательно, факториал числа N1 равен произведению числа N на факториал числа (N-1)!. В свою очередь, факториал числа (АС-1)! — это произведение числа N-1 на факториал числа (N-2)! и т. д.

Таким образом, если вычисление факториала числа N! реализовать как функцию, то в теле этой функции должен быть вызов функции вычисления факториала числа (N-1)!, т. е. получим рекурсивную функцию, так как она вызывает сама себя.

Создание программного кода на языке ЯПг программирования Turbo Delphi

Для вычисления факториала числа создадим рекурсивную функцию Factorial (N: byte), аргументом которой является число N. В зависимости от значения числа N с использованием оператора ветвления if...then...else будем вычислять значение функции. Если функция вызывается с аргументом, равным 1, то она возвращает значение 1, в противном случае она обращается к самой себе и возвращает произведение N*Factorial(N-1).

2. Создать рекурсивную функцию, реализующую вычисление факториала:

function Factorial(N:byte): int64;
begin
if N = 1
then Factorial := 1
else Factorial := N*Factorial(N-1);
end;

Для вывода шагов вычисления факториала воспользуемся циклом со счетчиком, в котором счетчик цикла (переменная I) будет принимать значения от минимального (1) до максимального (значение переменной N). В теле цикла будем вызывать рекурсивную функцию, вычисляющую факториал, и выводить значения счетчика цикла и функции в список.

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

var
I: byte;
N: byte;
procedure TForml.EditlChange(Sender: TObject);
begin
N := StrToInt(Edit1.Text);
ListBox1.Items.Clear;
For I := 1 To N Do
begin
ListBox1.Items.Add(IntToStr(I) +'!='+
IntToStr(Factorial(I)));
end;
end;

Запуск проекта на языках Visual Basic .NET, Visual C#, Visual J# и Turbo Delphi

4. Запустить проект на выполнение и ввести в текстовое поле число (например, 20).

В списке будут выведены шаги вычисления факториала введенного числа (см. рис. 4.22).

Рис. 4.22. Проект «Факториал (рекурсия)»



Следующая страница Контрольные вопросы. Компьютерный практикум



Cкачать материалы урока







Наверх