zoukankan      html  css  js  c++  java
  • Go指南练习_斐波纳契闭包

    源地址 https://tour.go-zh.org/moretypes/26

    一、题目描述

    让我们用函数做些好玩的事情。

    实现一个 fibonacci 函数,它返回一个函数(闭包),该闭包返回一个斐波纳契数列 `(0, 1, 1, 2, 3, 5, ...)`。

    二、题目分析

    • 要实现一个fibonacci函数;
    • 使该函数返回一个闭包;
    • 该闭包再返回一个斐波那契数列;
    • 闭包函数会引用函数体以外的值,可以对其修改。

    三、Go代码

    package main
    
    import "fmt"
    
    // fibonacci is a function that returns
    // a function that returns an int.
    func fibonacci() func() int {
        back1, back2:= 0, 1  // 预先设定好两个初始值
    
        return func() int {
            
            temp := back1 //记录(back1)的值      
            back1,back2 = back2,(back1 + back2) // 重新赋值(这个就是核心代码)        
            return temp //返回temp
        }    
    }
    
    func main() {
        f := fibonacci()  //返回一个闭包函数
        for i := 0; i < 10; i++ {  //打印斐波纳契数列
            fmt.Println(f())
        }
    }

     运行结果

  • 相关阅读:
    JAVA 动态代理
    IDEA 配置阿里云Maven
    JAVA Spring5静态代理
    Spring5 常用注解
    react
    Angular
    微信小程序
    H5
    vue-ui
    jQuery
  • 原文地址:https://www.cnblogs.com/OctoptusLian/p/9208272.html
Copyright © 2011-2022 走看看