Go语言实现Fibonacci数列的方法_Golang

本文实例讲述了Go语言实现Fibonacci数列的方法。分享给大家供大家参考。具体如下:

Fibonacci数列:1,1,2,3,5,8,13,21,,, (即从第三项起,每一项的值都等于前两项之后)

第一种,使用递归:

复制代码 代码如下:

func fibonacci(a int) int { 
    if a == 1 || a == 2 { 
        return 1 
    } 
    return fibonacci(a-1) + fibonacci(a-2) 
}

第二种,不使用递归:

复制代码 代码如下:

func fibonacci_version2(index int) int { 
    if index == 1 || index == 2 { 
        return 1 
    } 
    a, b := 1, 1 
    for i := 3; i <= index; i++ { 
        a, b = b, (a + b) 
    } 
    return a + b 
}

经过检验,使用非递归算法的效率要远远高于递归算法。

希望本文所述对大家的Go语言程序设计有所帮助。

时间: 2024-09-20 06:26:07

Go语言实现Fibonacci数列的方法_Golang的相关文章

Java基于高精度整型实现fibonacci数列的方法_java

本文以实例形式讲述了Java基于高精度整型实现fibonacci数列的方法,分享给大家供大家参考之用.具体方法如下: package com.java.learning.recursion; import java.math.*; public class MainClass { public static void main(String args[]){ for(int i = 0; i < 100; i++){ f(i+1); } } public static BigInteger f(

Go语言中使用反射的方法_Golang

本文实例讲述了Go语言中使用反射的方法.分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: // Data Model type Dish struct {   Id  int   Name string   Origin string   Query func() } 创建实例如下: 复制代码 代码如下: shabushabu = Dish.new shabushabu.instance_variables # => [] shabushabu.name = "Shabu-S

go语言base64加密解密的方法_Golang

本文实例讲述了go语言base64加密解密的方法.分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: package main import (     "encoding/base64"     "fmt" ) const (     base64Table = "123QRSTUabcdVWXYZHijKLAWDCABDstEFGuvwxyzGHIJklmnopqr234560178912" ) var coder = base6

go语言中时间戳格式化的方法_Golang

本文实例讲述了go语言中时间戳格式化的方法.分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: var t int64 = time.Now().Unix() var s string = time.Unix(t, 0).Format("2006-01-02 15:04:05") println(s) 这方式比较特别,按照123456来记忆吧:01月02号 下午3点04分05秒 2006年 希望本文所述对大家的Go语言程序设计有所帮助.

Go语言通过smtp发送邮件的方法_Golang

本文实例讲述了Go语言通过smtp发送邮件的方法.分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: package main import (  "net/smtp"  "fmt"  "strings" ) /*  * user : example@example.com login smtp server user  * password: xxxxx login smtp server password  * host: smt

go语言实现文件分割的方法_Golang

本文实例讲述了go语言实现文件分割的方法.分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: import (  // "bufio"  "flag"  "fmt"  "io"  "os" ) import "strconv" var infile *string = flag.String("f", "Null", "ple

go语言实现AES加密的方法_Golang

本文实例讲述了go语言实现AES加密的方法.分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: package main import ( "fmt" "crypto/aes" "strings" ) func main(){ rb:=[]byte {1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6}; b:=make([]byte,16); strings.NewReader("123456789012345

C语言求Fibonacci斐波那契数列通项问题的解法总结_C 语言

一:递归实现  使用公式f[n]=f[n-1]+f[n-2],依次递归计算,递归结束条件是f[1]=1,f[2]=1. 二:数组实现  空间复杂度和时间复杂度都是0(n),效率一般,比递归来得快. 三:vector<int>实现  时间复杂度是0(n),时间复杂度是0(1),就是不知道vector的效率高不高,当然vector有自己的属性会占用资源. 四:queue<int>实现  当然队列比数组更适合实现斐波那契数列,时间复杂度和空间复杂度和vector<int>一样

求斐波那契(Fibonacci)数列通项的七种实现方法_C 语言

一:递归实现使用公式f[n]=f[n-1]+f[n-2],依次递归计算,递归结束条件是f[1]=1,f[2]=1.二:数组实现空间复杂度和时间复杂度都是0(n),效率一般,比递归来得快.三:vector<int>实现时间复杂度是0(n),时间复杂度是0(1),就是不知道vector的效率高不高,当然vector有自己的属性会占用资源.四:queue<int>实现当然队列比数组更适合实现斐波那契数列,时间复杂度和空间复杂度和vector<int>一样,但队列太适合这里了,