斐波纳契数列,又称黄金分割数列,指的是这样一个数列:1、1、2、3、5、8、13、21、……在数学上,斐波纳契数列以如下被以递归的方法定义:F0=0,F1=1,Fn=F(n-1)+F(n-2)(n>=2,n∈N*)
递归实现
package main import "fmt" func fibonacci(num int) int{ if num<2{ return 1 } return fibonacci(num-1) + fibonacci(num-2) } func main(){ for i := 0; i<10; i++{ nums := fibonacci(i) fmt.Println(nums) } }
闭包实现
package main import "fmt" func fibonacci() func() int{ a, b := 0, 1 return func() int{ a, b = b, a+b return a } } func main() { f := fibonacci() for i := 0; i < 10; i++ { fmt.Println(f()) } }
方法3 通道chanel
package main import( "fmt" ) func fib(n int, c chan int){ a,b :=0,1 for i:=0; i<n; i++{ a,b = b,a+b c <- a } close(c) } func main(){ c := make(chan int,10) fib(cap(c),c) for i:=range c{ fmt.Println(i) } }
保存计算结果的方法
package main import "fmt" var fibs [40]uint64 func fib_function(n int) (res uint64) { if fibs[n] !=0{ res = fibs[n] return } if(n<=1){ res = 1 }else{ res = fib_function(n-1)+fib_function(n-2) } fibs[n] = res return } func main(){ fib_function(10) for i := 0; i<10;i++{ fmt.Println(fibs[i]) } }
有疑问加站长微信联系(非本文作者)