--- /dev/null
+func fib(n)
+ if 1 >= n then return n; end;
+ var fib_n := 1; (* fib(n) *)
+ var fib_n1 := 0; (* fib(n-1) *)
+ var r := 0;
+
+ while n >= 2 do
+ (* calculate fib(n+1) *)
+ r := fib_n + fib_n1;
+ (* update fib(n-1) and fib(n) *)
+ fib_n1 := fib_n;
+ fib_n := r;
+ n := n + (-1);
+ end;
+ return r;
+end;
+