Catalan numbers: Difference between revisions
Content added Content deleted
m (→{{header|Common Lisp}}: wrong) |
(added Liberty BASIC) |
||
Line 1,440: | Line 1,440: | ||
catalan'!:15 |
catalan'!:15 |
||
1 1 2 5 14 42 132 429 1430 4862 16796 58786 208012 742900 2674440</lang> |
1 1 2 5 14 42 132 429 1430 4862 16796 58786 208012 742900 2674440</lang> |
||
=={{header|Liberty BASIC}}== |
|||
<lang lb> |
|||
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 |
|||
</lang> |
|||
Output: |
|||
<pre> |
|||
non-recursive version |
|||
42 |
|||
0 = 1 |
|||
1 = 1 |
|||
2 = 2 |
|||
3 = 5 |
|||
4 = 14 |
|||
5 = 42 |
|||
6 = 132 |
|||
7 = 429 |
|||
8 = 1430 |
|||
9 = 4862 |
|||
10 = 16796 |
|||
11 = 58786 |
|||
12 = 208012 |
|||
13 = 742900 |
|||
14 = 2674440 |
|||
15 = 9694845 |
|||
recursive version |
|||
42 |
|||
0 = 1 |
|||
1 = 1 |
|||
2 = 2 |
|||
3 = 5 |
|||
4 = 14 |
|||
5 = 42 |
|||
6 = 132 |
|||
7 = 429 |
|||
8 = 1430 |
|||
9 = 4862 |
|||
10 = 16796 |
|||
11 = 58786 |
|||
12 = 208012 |
|||
13 = 742900 |
|||
14 = 2674440 |
|||
15 = 9694845 |
|||
recursive with memoisation |
|||
42 |
|||
0 = 1 |
|||
1 = 1 |
|||
2 = 2 |
|||
3 = 5 |
|||
4 = 14 |
|||
5 = 42 |
|||
6 = 132 |
|||
7 = 429 |
|||
8 = 1430 |
|||
9 = 4862 |
|||
10 = 16796 |
|||
11 = 58786 |
|||
12 = 208012 |
|||
13 = 742900 |
|||
14 = 2674440 |
|||
15 = 9694845</pre> |
|||
=={{header|Mathematica}}== |
=={{header|Mathematica}}== |