print "non-recursive version" print catNonRec(5) for i = 0 to 15 print i;" = "; catNonRec(i) next print print "recursive version" print catRec(5) for i = 0 to 15 print i;" = "; catRec(i) next print print "recursive with memoisation" redim cats(20) 'clear the array print catRecMemo(5) for i = 0 to 15 print i;" = "; catRecMemo(i) next print wait function catNonRec(n) 'non-recursive version catNonRec=1 for i=1 to n catNonRec=((2*((2*i)-1))/(i+1))*catNonRec next end function function catRec(n) 'recursive version if n=0 then catRec=1 else catRec=((2*((2*n)-1))/(n+1))*catRec(n-1) end if end function function catRecMemo(n) 'recursive version with memoisation if n=0 then catRecMemo=1 else if cats(n-1)=0 then 'call it recursively only if not already calculated prev = catRecMemo(n-1) else prev = cats(n-1) end if catRecMemo=((2*((2*n)-1))/(n+1))*prev end if cats(n) = catRecMemo 'memoisation for future use end function