1, math/big

package main

import (
	"fmt"
	"math/big"
	"time"
)

const LIM = 10000 //求第10000位的费布拉切数

var fibs [LIM]*big.Int //使用数组保存计算出来的费布拉切数的指针

func main() {
	result := big.NewInt(0)
	start := time.Now()
	for i := 0; i < LIM; i++ {
		result = fibonacci(i)
		if i == LIM-1 {
			fmt.Printf("fibonacci(%d) is: %d\n", i, result)
		}
	}

	fmt.Println(result)
	fmt.Printf("%T\n", result)
	end := time.Now()
	delta := end.Sub(start)
	fmt.Printf("longCalculation took this amount of time: %s\n", delta)
}

func fibonacci(n int) (res *big.Int) {
	if n <= 1 {
		res = big.NewInt(1)
	} else {
		temp := new(big.Int)
		res = temp.Add(fibs[n-1], fibs[n-2])
	}
	fibs[n] = res
	return
}

2, math/big

package main

import (
	"fmt"
	"math/big"
)

func genFibLst(n int) (a []string) {
	n1 := big.NewInt(1)
	n2 := big.NewInt(1)
	fmt.Printf("n1=%d,type(n1)=%T n2=%d,type(n2)=%T\n",n1,n1,n2,n2)
	fmt.Printf("n1=%s, n2=%s, n1.string=%s\n",n1,n2,n1.String())
	fmt.Printf("n1=%#v, n1=%v \n",n1,n1)
	fmt.Printf("n1=%#v, n1=%v %v \n",n1,n1,*n1)
	fmt.Printf("n2=%#v, n2=%v %v\n",n1,n1,*n2)
	for n > 0 {
		a = append(a, n1.String())
		tmp := n1.Add(n1, n2)
		fmt.Printf("----------n1=%s, n2=%s, a=%v,tmp=%s \n",n1,n2,a,tmp)
		n1 = n2
		n2 = tmp
		n --
	}
	return a
}

func main() {
	lst := genFibLst(10)
	for index, val := range lst {
		fmt.Println(">>>",index + 1, val)
	}
}

标签智能推荐:

go 的day 10

Day 10http 编程Go 原生支持 http, import "net/http"Go 的 http 服务性能和 nginx 比较接近几行代码就可以实现一个 web 服务简单的例子package mainimport ("fmt""n...

golang fmt格式“占位符”

golang 的fmt 包实现了格式化I/O函数,类似于C的 printf 和 scanf。# 定义示例类型和变量type Human struct { Name string}var people = Human{Name:"zha...

go语言从入门到删库的那些事

计划学习go语言已经是很久之前的事情了,写此博文纪念一下学习go语言的那些事情,希望给一路同行的你一些小小的帮助(长期更新)1.推荐的书籍及文档手册 Go语言设计与实现

Mac下go多版本切换

简介自己学习的时候,可能会使用go的最新版本,工作中可能会用其他的版本,怎么进行go版本的切换这是一个问题,本文编写针对MAC。前置条件安装Homebrew,官网地址:https://brew.sh/index_zh-cn。安装GO通过br...

django-apscheduler插件来实现Django中

1、前言在开发当中我们或多或少都会有某个需求需要定时去执行。在Django框架里我比较喜欢用django-apscheduler插件来实现Django中的定时任务。2、django-apscheduler 介绍它支持三种任务调度任务:1.固...

睿翼NBR6120-E(系统版本:NBR_RGOS 11.9

ACL规则屏蔽外网攻击的IP地址  黑名单IP1:45.92.161.68  黑名单IP2:188.234.148.238一、创建ACL访问列表,下图:二、通过acl访问列表添加黑名单IP地址,如下图: 添加后结果如下图: 三、绑定访问控制...

使用Django的auth模块内置的密码加密方法

使用auth模块实现自定义用户表的密码密文获取加密密码的方法from django.contrib.auth.hashers import make_password# 设置密码 res = make_password(‘lqz123...

golang使用go mod包含另一个文件的方法

新建test文件夹在这个文件夹下干活在根目录新建main.go文件main.gopackage mainimport ("test/modules")func main(){modules.Task()}在根目录下新建modules文件夹在...

R Works with Google Earth Engi

Date : 2022/04/24Intallation Tutorial - Reference : Introduction to rgee (r-project.org) Prerequisites :1. A registered ...

Django中间件小实例

需求:利用django中间件,当普通的键值对数据进来的时候,都能通过request.data中拿到实现:1.在子应用下创建一个py文件,自定义一个中间件,自定义中间件需要继承MiddlewareMixin的类,2.在该类下用process_...