google golangでたらいまわし
http://golang.org/の話。
とりあえずたらいまわしてみたら、gcc -O3の4倍くらいの所要時間だった。なかなか速い。
package main import "fmt" func tarai(x int, y int, z int) int { if x <= y { return y } else { return tarai(tarai(x-1, y, z), tarai(y-1, z, x), tarai(z-1, x, y)) } return 0//最後にreturnがないとダメらしい } func main() { for i := 0; i < 0x10; i++ { tarai(12, 6, 0); } fmt.Printf("tarai(6) %d\n", tarai(6, 3, 0)); fmt.Printf("tarai(12) %d\n", tarai(12, 6, 0)); }