package main import ( "fmt" "time" ) func main() { result := 0 start := time.Now() for i := 1; i <= 40; i++ { result = fibonacci(i) fmt.Printf("數列第 %d 位: %dn", i, result) } end := time.Now() delta := end.Sub(start) fmt.Printf("程式的執行時間為: %sn", delta) } func fibonacci(n int) (res int) { if n <= 2 { res = 1 } else { res = fibonacci(n-1) + fibonacci(n-2) } return }執行結果如下所示:
數列第 1 位: 1
數列第 2 位: 1
數列第 3 位: 2
數列第 4 位: 3
...
數列第 39 位: 63245986
數列第 40 位: 102334155
程式的執行時間為: 2.2848865s
package main import ( "fmt" "time" ) const LIM = 41 var fibs [LIM]uint64 func main() { var result uint64 = 0 start := time.Now() for i := 1; i < LIM; i++ { result = fibonacci(i) fmt.Printf("數列第 %d 位: %dn", i, result) } end := time.Now() delta := end.Sub(start) fmt.Printf("程式的執行時間為: %sn", delta) } func fibonacci(n int) (res uint64) { // 記憶化:檢查陣列中是否已知斐波那契(n) if fibs[n] != 0 { res = fibs[n] return } if n <= 2 { res = 1 } else { res = fibonacci(n-1) + fibonacci(n-2) } fibs[n] = res return }執行結果如下所示:
數列第 1 位: 1
數列第 2 位: 1
數列第 3 位: 2
數列第 4 位: 3
...
數列第 39 位: 63245986
數列第 40 位: 102334155
程式的執行時間為: 0.0149603s