go语言编写斐波那契前50项,显示运行时间,分别用递归和迭代方法
时间: 2024-10-21 21:05:17 浏览: 31
Go语言中可以使用递归和迭代的方式分别计算斐波那契数列的前50项,并记录运行时间。这里提供两种方法的示例代码:
### 1. 递归方法
```go
package main
import (
"fmt"
"time"
)
func fibonacciRecursion(n int) (int, error) {
if n <= 0 {
return 0, fmt.Errorf("Invalid input for Fibonacci calculation")
}
if n == 1 || n == 2 {
return n, nil
}
prev, curr := 1, 1
for i := 3; i <= n; i++ {
next := prev + curr
prev, curr = curr, next
}
return curr, nil
}
func fibonacciSeries(n int) {
startTime := time.Now()
for i := 0; i < n; i++ {
_, _ = fibonacciRecursion(i)
}
duration := time.Since(startTime)
fmt.Printf("Fibonacci series up to %d in Go recursive: %v\n", n, duration)
}
func main() {
fibonacciSeries(50)
}
```
运行这段代码会展示递归方法计算前50项斐波那契数列的运行时间。
### 2. 迭代方法
```go
package main
import (
"fmt"
"time"
)
func fibonacciIteration(n int) (int, error) {
if n <= 0 {
return 0, fmt.Errorf("Invalid input for Fibonacci calculation")
}
var a, b int = 0, 1
for i := 0; i < n; i++ {
a, b = b, a+b
}
return a, nil
}
func fibonacciSeriesIterative(n int) {
startTime := time.Now()
for i := 0; i < n; i++ {
_, _ = fibonacciIteration(i)
}
duration := time.Since(startTime)
fmt.Printf("Fibonacci series up to %d in Go iterative: %v\n", n, duration)
}
func main() {
fibonacciSeriesIterative(50)
}
```
这段代码展示了迭代方法计算前50项斐波那契数列的运行时间。
阅读全文