Показаны различия между двумя версиями страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия Следующая версия Следующая версия справа и слева | ||
bb:redbook:204 [2017/08/30 09:31] prospero78 [2. Вычисление факториала] |
bb:redbook:204 [2017/08/30 09:46] prospero78 [2. Вычисление факториала] |
||
---|---|---|---|
Строка 23: | Строка 23: | ||
Hello11.odc | Hello11.odc | ||
+ | < | ||
+ | MODULE TestHello11; | ||
+ | (* это программа на языке | ||
+ | Компонентный Паскаль. Она показывает | ||
+ | как можно вычислить произвольный факториал рекурсией. *) | ||
+ | |||
+ | IMPORT мВв := In, | ||
+ | мЛог := Log; | ||
+ | |||
+ | PROCEDURE Факт_Получ (пцФактор: | ||
+ | BEGIN | ||
+ | IF пцФактор = 1 THEN | ||
+ | мЛог.String(' | ||
+ | RETURN 1 | ||
+ | ELSE | ||
+ | мЛог.String(' | ||
+ | RETURN пцФактор * Факт_Получ(пцФактор - 1); | ||
+ | END; | ||
+ | END Факт_Получ; | ||
+ | |||
+ | PROCEDURE Старт*; | ||
+ | VAR | ||
+ | цФактор: | ||
+ | цБаза: | ||
+ | |||
+ | BEGIN | ||
+ | мЛог.String(' | ||
+ | мВв.Open; | ||
+ | мВв.Int(цБаза); | ||
+ | мЛог.String(' | ||
+ | цФактор := Факт_Получ(цБаза); | ||
+ | мЛог.String(' | ||
+ | END Старт; | ||
+ | |||
+ | BEGIN | ||
+ | END TestHello11. | ||
+ | |||
+ | " | ||
+ | |||
+ | ^TestHello11.Старт 6 | ||
+ | </ | ||
- | Обратите внимание, | + | Обратите внимание, |
Вывод программы представлен ниже: | Вывод программы представлен ниже: | ||
+ | компилируется " | ||
+ | Введите основание факториала: | ||
+ | BEGIN цБаза= 6 | ||
+ | пцФактор= 6 | ||
+ | пцФактор= 5 | ||
+ | пцФактор= 4 | ||
+ | пцФактор= 3 | ||
+ | пцФактор= 2 | ||
+ | Достигнуто дно | ||
+ | f( 6)= 720 | ||
| | ||
Как видно из вывода переменная " | Как видно из вывода переменная " |