takfp.pp 315 B

123456789101112131415161718
  1. program takfp;
  2. {$mode objfpc}
  3. uses SysUtils;
  4. function Tak(const x, y, z: double): double;
  5. begin
  6. if y >= x then Tak:=z else
  7. Tak:=Tak(Tak(x-1,y,z), Tak(y-1,z,x), Tak(z-1,x,y));
  8. end;
  9. var n: integer;
  10. begin
  11. if paramcount<1 then n:=1
  12. else n:=StrToInt(paramstr(1));
  13. writeln(Tak(n*3, n*2, n*1):0:1);
  14. end.