Компонентный Паскаль/Рекурсия на примере факториала: различия между версиями

Содержимое удалено Содержимое добавлено
Строка 21:
Hello11.odc
<source lang="oberon2">
MODULE TestHello11;
(* это программа на языке
Компонентный Паскаль. Она показывает
как можно вычислить произвольный факториал рекурсией. *)
 
IMPORT In, Log, Math;
 
PROCEDURE GetFactorial (n: INTEGER): INTEGER;
BEGIN
IF n = 1 THEN
Log.String('Достигнуто дно '); Log.Ln;
RETURN 1
ELSE
Log.String('n='); Log.Int(n); Log.Ln;
RETURN n * GetFactorial(n - 1);
END;
END GetFactorial;
 
PROCEDURE Start*;
VAR
f: INTEGER; (* факториал *)
n: INTEGER; (* онование факториала *)
 
BEGIN
Log.String('Введите основание факториала: ');
In.Open;
In.Int(n); Log.Ln;
Log.String('BEGIN n='); Log.Int(n); Log.Ln;
f := GetFactorial(n);
Log.String('f('); Log.Int(n); Log.String(')!)= '); Log.Int(f); Log.Ln;
END Start;
 
BEGIN
END TestHello11.
</source>