A Tour of Go moretypes/26 Exercise: Fibonacci closure 俺の答え Golang

久々にツアーオブゴの続き
go-tour-jp.appspot.com


関数が変数みたいに使えるって話



例題はフィボナッチ数列を表示するプログラムをかいてってやつ


フィボナッチといえば、クラッシュフィーバーというゲームで
青髪短髪のイケメンで
強くてかなり好きでした
手に入りにくかったし
一時は青属性のエースでしたね


package main

import "fmt"

// fibonacci is a function that returns
// a function that returns an int.
func fibonacci() func(int) int {
	fib := 0
	preFib := 0
	prePreFib := 0
	return func(x int) int {
		if x == 0 {
			return 0
		}
		if x == 1 {
			preFib = 1
			return 1
		}
		prePreFib = fib
		fib = preFib + fib
		
		preFib = prePreFib
		return fib
	}
	
}

func main() {
	f := fibonacci()
	for i := 0; i < 100; i++ {
		fmt.Println(f(i))
	}
}


prePreFibってなんだよお前

もっとスマートな方法ないんですか?
探して、勉強します



以上です