File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1+ package ackermann
2+
3+ func Compute (m , n int ) int {
4+ if m == 0 {
5+ return n + 1
6+ } else if m > 0 && n == 0 {
7+ return Compute (m - 1 , 1 )
8+ }
9+
10+ return Compute (m - 1 , Compute (m , n - 1 ))
11+ }
Original file line number Diff line number Diff line change 1+ package catalan
2+
3+ func Direct (n int ) int {
4+ return fact (2 * n ) / (fact (n + 1 ) * fact (n ))
5+ }
6+
7+ func Binomial (n int ) int {
8+ if n == 0 {
9+ return 1
10+ }
11+
12+ return binomialCoeff (2 * n , n ) - binomialCoeff (2 * n , n - 1 )
13+ }
14+
15+ func Sum (n int ) (sum int ) {
16+ for i := 0 ; i <= n ; i ++ {
17+ v := binomialCoeff (n , i )
18+ sum += v * v
19+ }
20+ return
21+ }
22+
23+ func binomialCoeff (n , k int ) int {
24+ return fact (n ) / (fact (n - k ) * fact (k ))
25+ }
26+
27+ func fact (n int ) int {
28+ if n <= 1 {
29+ return 1
30+ }
31+
32+ return n * fact (n - 1 )
33+ }
Original file line number Diff line number Diff line change @@ -5,9 +5,6 @@ def catalan_binomial(n):
55 if n == 0 : return 1
66 return binomial_coefficient (2 * n , n ) - binomial_coefficient (2 * n , n - 1 )
77
8- def catalan_fact (n ):
9- return factorial (2 * n ) / (factorial (n + 1 ) * factorial (n ))
10-
118def catalan_sum (n ):
129 return sum ([binomial_coefficient (n , i ) ** 2 for i in xrange (n + 1 )]) / (n + 1 )
1310
@@ -20,6 +17,5 @@ def factorial(n):
2017if __name__ == '__main__' :
2118 # Make sure all implementations give the same results
2219 print (all ([catalan_direct (n )
23- == catalan_binomial (n )
2420 == catalan_binomial (n )
2521 == catalan_sum (n ) for n in xrange (100 )]))
You can’t perform that action at this time.
0 commit comments