-- DETERMINES VALUE! USING A RECURSIVE FUNCTION


with Instrument;
use Instrument;

procedure Facta1 is
    V : Integer;
    Fact : constant Integer := 12;
    Cycle : constant Integer := 1000;
    function Factorial (Value : in Integer) return Integer is

    begin

        if

           Value = 1

            then

            return 1;

        else

            return (Value * Factorial (Value - 1));

        end if;

    end Factorial;


begin

    Start ("FACTA1", " RECURSIVE FUNCTION FOR VALUE! CALLED 1000 TIMES");
    for I in 1 .. Cycle loop
        --     V := FACTORIAL(FACT);
        V := Ident_Int (V);
    end loop;
    -- COMMENT("FACTORIAL OF "&INTEGER'IMAGE(FACT)&" IS " &
    --          INTEGER'IMAGE(V));
    Stop;
end Facta1;

