Skip to content

Commit 5f56004

Browse files
authored
Merge branch 'main' into dependabot/go_modules/github.com/stretchr/testify-1.10.0
2 parents 37b0096 + 9785655 commit 5f56004

File tree

4 files changed

+34
-0
lines changed

4 files changed

+34
-0
lines changed

README.md

+1
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ So far, the following exercises have been covered:
1313
- [Cons, Car, Cdr & co.](./cons) – implements a cons cell and the corresponding functions
1414
- [Continous maximum](./continuousmax/) – calculates the maximum of a sliding window
1515
- [Egyptian fractions](./egyptianfractions/) – calculates the "Egyptian Fractions" version of a given fraction
16+
- [Fibonacci](./fibonacci/) – calculates the n-th Fibonacci number
1617
- [Floyd](./floyd/) – implements Floyd's cycle-finding "Tortoise and Hare" algorithm
1718
- [Heap](./heap/) – implements a heap from scratch, without using the built-in `container/heap` package
1819
- [Markov count](./markovcount/) – figures out how often states are reached by a Markov chain

fibonacci/documentation.go

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
// Package fibonacci calculates the n-th Fibonacci number.
2+
package fibonacci

fibonacci/fibonacci.go

+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package fibonacci
2+
3+
import "math"
4+
5+
func Fib(n int) int {
6+
phi := (1 + math.Sqrt(5)) / 2
7+
return int(math.Round(math.Pow(phi, float64(n)) / math.Sqrt(5)))
8+
}

fibonacci/fibonacci_test.go

+23
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package fibonacci_test
2+
3+
import (
4+
"testing"
5+
6+
"github.com/stretchr/testify/assert"
7+
"github.com/thenativeweb/codingcircle/fibonacci"
8+
)
9+
10+
func TestFib(t *testing.T) {
11+
assert.Equal(t, 1, fibonacci.Fib(1))
12+
assert.Equal(t, 1, fibonacci.Fib(2))
13+
assert.Equal(t, 2, fibonacci.Fib(3))
14+
assert.Equal(t, 3, fibonacci.Fib(4))
15+
assert.Equal(t, 5, fibonacci.Fib(5))
16+
assert.Equal(t, 8, fibonacci.Fib(6))
17+
assert.Equal(t, 13, fibonacci.Fib(7))
18+
assert.Equal(t, 21, fibonacci.Fib(8))
19+
assert.Equal(t, 34, fibonacci.Fib(9))
20+
assert.Equal(t, 55, fibonacci.Fib(10))
21+
22+
assert.Equal(t, 1134903170, fibonacci.Fib(45))
23+
}

0 commit comments

Comments
 (0)