Aller au contenu

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
    }
}