53 lines
1.1 KiB
Text
53 lines
1.1 KiB
Text
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
|