GO 使用闭包实现菲波那切数列

fmt.Println(fibonacci2(10))

func fibonacci2(n int) int {
    if n == 0 {
        return 0
    } else {
        var res int
        ff := func() func() int {
            back1, back2 := 1, 1 // 预先定义好前两个值
            return func() int {
                //记录(back1)的值
                temp := back1
                // 重新赋值(这个就是核心代码)
                back1, back2 = back2, (back1 + back2)
                //返回temp
                return temp
            }
        }()
        for i := 1; i <= n+1; i++ {
            if i == n+1 {
                res = ff()
            } else {
                ff()
            }
        }
        return res
    }
}

你可能感兴趣的:(GO 使用闭包实现菲波那切数列)