Go Exercise:Fibonacci closure

どのプログラミング言語でもループ処理の練習問題として見るのがフィボナッチ数列。これまでにJavaScriptとpythonで書いたことあります。Goで書いて見ましょう。ほんで関数クロージャーとか使ってみましょう。第1級オブジェクトとかよくわかりません。Let's Go!!

package main

import (
	"fmt"
)

func fibonacci() func() int {
	three := 0
	two   := 0
	one   := 1
	return func() int {
		three = two
		two   = one
		one   = two + three
		return three
	}
}

func main() {
	f := fibonacci()

	for i := 1; i < 10; i++ {
		fmt.Println(f())
	}
}

なんかもっとスマートに書けただろって感じですね。変数とか。ただフィボナッチ数列の定義式は3項なのでやはり変数3つは必要かな?とも思ったり。何にせよ芸がなかった。


この記事が気に入ったらサポートをしてみませんか?