added fibonacci closure exercise solution
This commit is contained in:
parent
b9967d888d
commit
1bade734cf
29
exercises/03-fibonacci/fibonacci.go
Normal file
29
exercises/03-fibonacci/fibonacci.go
Normal file
@ -0,0 +1,29 @@
|
||||
package main
|
||||
|
||||
import "fmt"
|
||||
|
||||
// fibonacci is a function that returns
|
||||
// a function that returns an int.
|
||||
// from cpython/Doc/build/html/library/functools.html
|
||||
// [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610]
|
||||
func fibonacci() func() int {
|
||||
cur_fib := 0
|
||||
nxt_fib := 0
|
||||
return func() int {
|
||||
if nxt_fib == 0 {
|
||||
nxt_fib = 1
|
||||
return 0
|
||||
}
|
||||
tmp := cur_fib
|
||||
cur_fib = nxt_fib
|
||||
nxt_fib += tmp
|
||||
return cur_fib
|
||||
}
|
||||
}
|
||||
|
||||
func main() {
|
||||
f := fibonacci()
|
||||
for i := 0; i < 20; i++ {
|
||||
fmt.Println(f())
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user