Look at you Hacker optimizing the algorithm and all

Please note that the iterative version is not only faster and less resource intensive than it's recursive counterpart, but it's also easier to follow. That said here is a recursive version:

[pascal][background=#FFFFFF][comment=#8080FF][normal=#000080][number=#C00000][reserved=#000000][string=#00C000]
function AllRed(A: array of TColours): Boolean;
const
i: integer = 0; //This is a static variable declaration
begin
if A[i] = Red then begin
i := i + 1;
if (i < Length(A)) then begin
Result := AllRed(A);
end else begin
Result := True;
end;
i := i - 1;
end else begin
Result := False;
end;
end;

[/pascal]

P.S. Please don't use me to cheat on your homework