#!/usr/local/bin/pike
// -*- mode: pike -*-
// $Id: fibo.pike,v 1.2 2000/12/24 19:10:50 doug Exp $
// http://www.bagley.org/~doug/shootout/
//#pragma strict_types
// "memoized" by rjb@bobo.fuw.edu.pl --> speedup by factor ~100 (!)
object fib = class
{
static mapping(int:int) cache = ([0:1,1:1]);
static int `()(int n)
{
return cache[n] || (cache[n]=fib(n-2)+fib(n-1));
}
}();
void
main(int argc, array(string) argv) {
int n = max((int)argv[-1], 1);
int steps = n/9000;
for (int k=1; k<=steps;k++)
fib(9000*k);
write("%d\n", fib(n));
}