Skip to content

Commit 516c822

Browse files
committed
Merge pull request kennyledet#355 from jcla1/master
Added Ackermann function & Catalan numbers in Go
2 parents ffd1295 + ce6b1f2 commit 516c822

3 files changed

Lines changed: 44 additions & 4 deletions

File tree

Ackermann/Go/jcla1/ackermann.go

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
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+
}
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
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+
}

Catalan_Numbers/Python/jcla1/catalan.py

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff 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-
118
def 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):
2017
if __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)]))

0 commit comments

Comments
 (0)