Proc34. Описать функцию Fact($$N$$) вещественного типа, вычисляющую значение факториала $$N! = 1*2*…*N$$ ($$N > 0$$ — параметр целого типа; вещественное возвращаемое значение используется для того, чтобы избежать целочисленного переполнения при больших значениях $$N$$). С помощью этой функции найти факториалы пяти данных целых чисел.
Решение:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
program Proc34; Function Fact(N:Integer):Real; var i:integer; tempRez:Real; begin tempRez:=1; for i:=1 to N do tempRez:=tempRez*i; Fact:=tempRez; end; var N,i:Integer; begin for i:=1 to 5 do begin Write('N :'); Readln(N); Writeln( Fact(N) ); end; end. |
Решение Newton, рекурсия:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
program Proc34; function Fact (N : byte) : real; begin if N <= 1 then Fact := 1 else Fact := N * Fact(N - 1); end; Procedure Proceed; begin writeln; writeln; writeln('Press to proceed..'); readln; writeln; end; const Limit = 5; var Number, Counter : byte; begin for Counter := 1 to Limit do begin write(Counter, '. Enter a number: '); readln(Number); writeln('Factorial: ' :19, Fact(Number) :0:0); end; Proceed; end. |
Другие задачи из раздела Proc можно посмотреть здесь.
Вариант с рекурсией:
Добавил в шапку.