37 lines
504 B
Plaintext
37 lines
504 B
Plaintext
PROCEDURE IterFib(n: INTEGER): INTEGER =
|
|
|
|
VAR
|
|
|
|
limit := ABS(n);
|
|
prev := 0;
|
|
curr, next: INTEGER;
|
|
|
|
BEGIN
|
|
|
|
(* trivial case *)
|
|
IF n = 0 THEN RETURN 0; END;
|
|
|
|
IF n > 0 THEN (* positive case *)
|
|
|
|
curr := 1;
|
|
FOR i := 2 TO limit DO
|
|
next := prev + curr;
|
|
prev := curr;
|
|
curr := next;
|
|
END;
|
|
|
|
ELSE (* negative case *)
|
|
|
|
curr := -1;
|
|
FOR i := 2 TO limit DO
|
|
next := prev - curr;
|
|
prev := curr;
|
|
curr := next;
|
|
END;
|
|
|
|
END;
|
|
|
|
RETURN curr;
|
|
|
|
END IterFib;
|