Contributor: ROB VAN GEEL

{
>      Can anyone give me a hand with this problem please! I needs to
> write a recursive function that will compute the number of possible
> ways a person can go up a stair of n steps if that person can take 1,
> 2, or 4 steps in one stride. Thanks in advance!
>
From: R.A.M.vGeel@kub.nl  (GEEL R.A.M.VAN)
}
program StairWay;

var
  Total : longint;
  NrOfSteps : integer;

procedure ClimbStairs(Steps: integer);

begin
  if Steps - 1 = 0 then inc(Total)  { last 1-step }
  else
    if Steps > 0 then
      begin
        if (Steps - 2) = 0 then inc(Total)  { last 2-step }
         else
            if (Steps - 2 > 0) then ClimbStairs(Steps - 2);

        if (Steps - 4) = 0 then inc(Total)  { last 4-step }
          else 
            if (Steps - 4) > 0 then ClimbStairs(Steps - 4);  
      end;
end;
 
begin
  Total := 0;
  write('Give number of steps: ');
  readln(NrOfSteps);
  ClimbStairs(NrOfSteps);
  writeln('Total possibilities: ', Total);
end.