golang 计算斐波拉数

  • 函数递归获取
    func fbn(n int) int {
    	if n ==1 || n == 2{
    		return 1
    	}else {
    		return fbn(n -1) +fbn(n - 2) 
    	}
    }
    

      函数开启的栈太多,容易导致内存泄漏

  • 数组或切片的方式获取
    func fbn(n int) []uint64 {
    	var slice = make([]uint64,n)
    
    	slice[0] =1
    
    	if n >=2 {
    		slice[1] = 2
    
    		for i:=2;i<n;i++ {
    			slice[i] = slice[i-1] +slice[i-2]
    		}
    	}
    
    	return slice
    }
    

      再获取到切片的最后一个元素 slice[len(slice) -1:]

posted @ 2020-11-23 22:01  易文杰  阅读(103)  评论(0编辑  收藏  举报