ページに戻る
-#start+ #start fix #?anch -e -**** 内容が未設定のページです-ブラウザの「戻る」で前のページに戻ってください。-または[[編集|EDIT]]のリンクをクリックして内容を入力してください。+ package main + import "fmt" + + type unaryFunc func (int) int; + + func fibMaker(f unaryFunc) unaryFunc { + return func (x int) int { + if x <= 1 { + return 1 + } + return f(x-1) + f(x-2); + }; + } + + func fix(g func (unaryFunc) unaryFunc) unaryFunc { + return g(func(x int) int { return fix(g)(x) }); + } + + func main() { + fib := fix(fibMaker); + for i := 1; i < 6; i++ { + fmt.Println(fib(i)); + } + } #end