Реализация алгоритма функции вычисления факториала на языке pascal

Блок-схема алгоритма функции вычисления факториала.

Математическая модель функции вычисления факториала.

Прямая рекурсия на примере вычисления факториала

Рекурсивные подпрограммы.

Текст программы вычисления числа сочетаний.

Реализация алгоритма функции вычисления факториала на языке PASCAL.

Блок-схема алгоритма функции вычисления факториала.

В данном случае математическая модель может быть реализована в виде разветвляющегося алгоритма с условием k=0, где по ветви да располагается оператор присваивания F:=1, а по ветви нет располагаются действия по вычислению F(k) = 1*2*3*...*k – эти действия представляют собой алгоритм накопления произведения.

Самостоятельно!

Самостоятельно!

При каких значениях аргумента использование этой функции имеет смысл?

Допустим, что подпрограмма вычисления факториала располагается в отдельном текстовом файле с именем FACT.INC, тогда в разделе процедур и функций программы на месте соответствующей подпрограммы будет стоять директива транслятору для подключения текстового файла

Самостоятельно!

В данном случае контроль за правильностью ввода исходных данных должен быть возложен на программу, что осуществляется с помощью директив транслятору: {$I-} и {$I+}. Необходимо помнить, что при отключенной системы прерываний на правильность ввода формируется значение системной переменной IOResult (результат выполнения операции ввода-вывода), ненулевое значение которой говорит об ошибке ввода.

Рекурсивное обращение к подпрограмме означает, что при выполнении подпрограмма вызывает сама себя.

Различают два вида рекурсии:

· прямая рекурсия – это, когда в подпрограмме явно указан вызов самой себя;

· косвенная рекурсия – это, когда при выполнении подпрограммы вызывается другая подпрограмма, а она, в свою очередь, вызывает первую подпрограмму.

F(0) = 1,

F(k) = 1*2*3*...*(k-2)*(k-1)*k = F(k-1)*k, для всех k>0

Самостоятельно!

Самостоятельно!

В этом алгоритме новое значение F формируется через предыдущее, т. е. F находится в левой и правой частях оператора присваивания, являясь в правой части составной частью выражения. Из-за этого возникает неоднозначная трактовка: чем является F - переменной или обращением к функции? Для устранения этой неоднозначности принято следующее правило:

если имя функции появляется в выражении, то это – вызов функции;

если имя функции – в левой части оператора присваивания, то это – переменная, в которой формируется результат функции (переменная-результат).

Вызов подпрограммы может использоваться при выполнении этой же подпрограммы. Такая ситуация называется рекурсивным обращением к подпрограмме.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: