package main
import (
"fmt"
_ "fmt"
"strconv"
"time"
)
func fib(N int) int {
//if N == 1 || N == 2 {
// return 1
//}
//return fib(N-1) + fib(N-2)
arr := []int{0, 1, 1}
for i := 3; i <= N; i++ {
arr = append(arr, arr[i-1]+arr[i-2])
}
return arr[N]
}
func binarysearch(nums []int, target int) int {
left := 0
fmt.Println(nums)
right := len(nums) - 1
for {
// 退出循环
if left > right {
break
}
//
mid := left + (right-left)/2
if nums[mid] == target {
return mid
//中间值小于目标值,左边界向右移动
} else if nums[mid] < target {
left = mid + 1
//中间值大于目标值 右边界向左移动
} else if nums[mid] > target {
right = mid - 1
}
}
return -1
}
func main() {
fmt.Printf("begin:%d\n", time.Now().Second())
fib_number := fib(50)
fmt.Printf("end:%d\n", time.Now().Second())
fmt.Printf("result:%s\n", strconv.Itoa(fib_number))
nums := []int{1, 2, 4, 3, 5, 6}
index := binarysearch(nums, 5)
fmt.Printf("binary:%s", strconv.Itoa(index))
}