Fibonacci Numbers
func TestFib(t *testing.T) {
fmt.Println(fib3(6))
}
func fib(n int) int {
if n == 1 {
return 0
}
if n == 2 {
return 1
}
pre2, pre1 := 0, 1
for i := 3; i <= n; i++ {
pre2, pre1 = pre1, pre1+pre2
}
return pre1
}
func fib2(n int) int {
if n == 1 {
return 0
}
if n == 2 {
return 1
}
return fib2(n-1) + fib2(n-2)
}
func fib3(n int) int {
a := []int{0, 1}
for i := 2; i <= n; i++ {
a = append(a, a[i-1]+a[i-2])
}
return a[n-1]
}