Факториал факториала. Написать программу для вычисления - Free Pascal

Формулировка задачи:

Всем привет. В общем, необходимо написать программу для вычисления данного выражения. Написал уже на многих форумах, ответов почти не было. Буду премного благодарен за любую помощь, ибо спросить больше не у кого. Заранее благодарю!

Код к задаче: «Факториал факториала. Написать программу для вычисления - Free Pascal»

textual
var overflow: boolean = false; //глобальная переменная!
 
procedure read_q(s: string; var x: extended);
begin
  repeat
    write(s, ' - неотрицательное целое;  ', s, ' = ');
    readln(x)
  until x >= 0
end;
 
function f(n: extended; k: integer): extended;
var p: extended;
begin
  Result := 1;
  overflow := overflow or (n > 1750);
  if not overflow
    then while n > 1 do
      begin
        Result *= n;
        n -= k
      end;
end;
 
function fact(n: extended): extended;
begin Result := f(n, 1) end;
 
function dfact(n: extended): extended;
begin Result := f(n, 2) end;
 
var m, n, y: extended;
begin
  read_q('m', m);
  read_q('n', n);
  y := fact(m);
  if not overflow
    then if n < y
      then writeln('Выражение не определено')
      else begin
        y := fact(n - y) / (fact(m) + dfact(n)) + dfact(m);
        if not overflow then writeln('y = ', y)
      end;
  if overflow then writeln('Переполнение');
  readln
end.

6   голосов, оценка 4.333 из 5


СОХРАНИТЬ ССЫЛКУ