module fibonacci { procedure fib(out int f, obs int n) { if(n < 2) f = n; else f = fib(n-1) + fib(n-2); } procedure fib2(upd int n) { if(n < 2) ; else n = fib2(n-1) + fib2(n-2); } procedure fib3(out int r, obs int n) { if(n < 2) r = n; else { var i = 1; var j = 0; // fib(n-2) var k = 1; // fib(n-1) var t = 0; while(i < n) { t = k + j; j = k; k = t; i = i + 1; } r = t; } } }