Fibonacci – avec solutions
Amusons-nous un peu avec les fonctions !
Implémentez une fonction fibonacci qui retourne une fonction (closure) qui
retourne les valeurs successives de la suite de Fibonacci : (\(0\), \(1\), \(1\), \(2\), \(3\), \(5\), …).
package main
import "fmt"
// fibonacci is a function that returns
// a function that returns an int.
func fibonacci() func() int {
// TODO: Implement
}
func main() {
f := fibonacci()
for i := 0; i < 10; i++ {
fmt.Println(f())
}
}
Solution
Solution 1
func fibonacci() func() int {
f0, f1 := 0, 1
return func() int {
f1 = f1 + f0
f0 = f1 - f0
return f1 - f0
}
}
Solution 2
func fibonacci() func() int {
f0, f1 := 0, 1
return func() int {
f0, f1 = f1, f0 + f1
return f1 - f0
}
}