Golang斐波那契数列输出的两种方法
第一种方法
直接上代码:
package main
import "fmt"
func main() {
result := 0
for i := 0; i <= 10; i++ {
result = fibonacci(i)
fmt.Printf("fibonacci(%d) is: %d\n", i, result)
}
}
func fibonacci(n int) (res int) {
if n <= 1 {
res = 1
} else {
res = fibonacci(n-1) + fibonacci(n-2)
}
return
}
解析
经典的递归函数算法实现
运行结果
第二种方法
直接上代码:
package main
import "fmt"
func main() {
f := fibonacci();
for i:= 1; i<=10; i++ {
fmt.Printf("fibonacci(%d) is: %d\n", i, f())
}
}
func fibonacci() func() int {
x := 0
y := 1
return func() int {
x,y = y,x+y
return y
}
}
解析
使用闭包,函数作为返回值的算法实现
运行结果
总结
条条大路通罗马,斐波那契数列你不仅仅可以用递归实现。