首页 > 其他 > 详细

Go斐波拉契数列(Fibonacci)(多种写法)

时间:2018-11-27 10:59:47      阅读:175      评论:0      收藏:0      [点我收藏+]

1 前言

斐波拉契数列有递归写法和尾递归和迭代写法。

2 代码

//recursion
func fib(n int) int{
	if n < 2{
		return n
	}else{
		return fib(n-1) + fib(n-2)
	}

}

func fibcore(n int) (int,int){
	if n < 2{
		return 0,n
	}else{
		a,b := fibcore(n-1)
		return b,a+b
	}

}

//tail recursion
func fib2(n int)(int){
	_,b:= fibcore(n)
	return b
}

//iteration 
func fib3(max int)(int){
	n:=0
	a,b:=0,1
	for {
		if n < max{
			a,b = b,a+b
			n ++
		}else{
			break
		}
	}
	return b
}

3 性能分析

测试第40个的数列值

递归

技术分享图片

尾递归(参数是40,100都大约是这个时间量)

技术分享图片

迭代(参数是40,100都大约是这个时间量)

技术分享图片

说明:本质上尾递归就是迭代,只是写法略有差别

 

  

Go斐波拉契数列(Fibonacci)(多种写法)

原文:https://www.cnblogs.com/fanbi/p/10024788.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!