zoukankan      html  css  js  c++  java
  • Go语言实现:【剑指offer】斐波那契数列

    该题目来源于牛客网《剑指offer》专题。

    大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)

    n<=39

    Go语言实现:
    递归:

    func fib(N int) int {
        if N == 0 {
            return 0
        }
        
        if N == 1 {
            return 1
        }
        
        return fib(N-1) + fib(N-2)
    }
    

    迭代:

    func fib(N int) int {
        if N == 0 {
            return 0
        }
        
        if N == 1 {
            return 1
        }
        
        //f(0) = f(1), f(1) = f(2)
        a, b := 0, 1
        for i := 2; i <= N; i++ { //此处需要等于N
            a, b = b, a+b
        }
        
        return b
    }
    

    迭代的闭包写法:

    func fib(N int) int {
      if N == 0 {
        return 0
      }if N == 1 {
        return 1
      }
        
      f := fibonacci()
      for i := 2; i < N; i++ { //此处需要小于N
        f()
      }
      _, b := f()
      return b
    }func fibonacci() func() (int, int) {
      a, b := 0, 1
      return func() (int, int) {
        a, b = b, a+b
        return a, b
      }
    }
    
  • 相关阅读:
    Windows网络编程经验小结
    异步Socket服务器与客户端
    用C#实现C/S模式下软件自动在线升级
    Linux 安装字体
    word 生成目录
    Linux sar使用
    yum 使用说明
    HASH JOIN算法
    row cache lock
    cursor: pin S
  • 原文地址:https://www.cnblogs.com/dubinyang/p/12099370.html
Copyright © 2011-2022 走看看