Blame |
    Last modification |
    View Log
    | Download
  
  
- -- fibonacci function with cache 
-   
- -- very inefficient fibonacci function 
- function fib(n) 
-         N=N+1 
-         if n<2 then 
-                 return n 
-         else 
-                 return fib(n-1)+fib(n-2) 
-         end 
- end 
-   
- -- a general-purpose value cache 
- function cache(f) 
-         local c={} 
-         return function (x) 
-                 local y=c[x] 
-                 if not y then 
-                         y=f(x) 
-                         c[x]=y 
-                 end 
-                 return y 
-         end 
- end 
-   
- -- run and time it 
- function test(s,f) 
-         N=0 
-         local c=os.clock() 
-         local v=f(n) 
-         local t=os.clock()-c 
-         print(s,n,v,t,N) 
- end 
-   
- n=arg[1] or 24          -- for other values, do lua fib.lua XX 
- n=tonumber(n) 
- print("","n","value","time","evals") 
- test("plain",fib) 
- fib=cache(fib) 
- test("cached",fib) 
-