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:]

原文地址:https://www.cnblogs.com/ywjcqq/p/14027414.html